Translate

顯示具有 NSDateFormatter 標籤的文章。 顯示所有文章
顯示具有 NSDateFormatter 標籤的文章。 顯示所有文章

2013年3月29日 星期五

NSDateFormatter格式化的資料

參考1

參考2

與時間相關
參數 代表意義

a AM/PM (上午/下午)
K 0~11 有0時的12小時制
h 1~12 12小時制
H 0~23 有0時的24小时制
k 1~24 24小時制
m 0~59 分鐘
s 0~59 秒數
s 秒數的個位數
A 0~86399999 一天當中的第幾微秒

v~vvv 一般的GMT時區縮寫
vvvv 一般的GMT時區名稱
z~zzz 具體的GMT時區縮寫
zzzz 具體的GMT時區名稱

與日期相關
參數 代表意義

d 1~31 日期
D 1~366 一年的第幾天
e 1~7 一週的第幾天
c/cc 1~7 一週的第幾天,星期日為第一天

ccc 星期幾縮寫
E~EEE 星期幾縮寫
cccc 星期幾全名
EEEE 星期幾全名

F 1~5 每月第幾周,一周的第一天為周一
w 1~5 每月第幾周,一周的第一天為周日
w 1~53 一年的第幾周,從去年的最後一個周日算起,一周的第一天為周日

L/LL 1~12 第幾個月
M/MM 1~12 第幾個月
LLL 月份縮寫
MMM 月份縮寫
LLLL 月份全名
MMMM 月份全名

q/qq 1~4 第幾季
Q/QQ 1~4 第幾季
qqq 季度縮寫
QQQ 季度縮寫
qqqq 季度全名
QQQQ 季度全名

u 完整年份
y/yyyy 完整年份
Y/YYYY 完整年份,從星期天開始的第一周算起
yy/yyy 兩位數的年份
YY/YYY 兩位數的年份,從星期天開始的第一周算起

特殊用途
參數 代表意義

g Julian Day Number,從4713 BC一月一日算起
G~GGG BC/AD 西元前後縮寫
GGGG 西元前後全名

這裡只有列出幾個常用常用參數,還有一些小技巧並沒有詳述,例如今天是 15 號,輸入參數 d 或是 dd 皆可以得到數值 15,可是輸入 ddd 卻會得到數值 015,而輸入 dddd 又會得到 0015,其他的參數也可以此類推,有興趣的讀者們可以自行實驗。

2013年2月21日 星期四

NSDateFormatter to NSDate to NSString are null

在解析RSS發生的問題
在RSS裡面的key值pubdate是Wed, 20 Feb 2013 00:00:00 GMT
這樣的表示方式
但是業主希望能呈現為2013-02-20
神奇的是
我在模擬器上可以取得轉換後的值
但是時機上卻不可以
最後才發現一個重點
就是要在一開始轉換的時候要加上時區

NSString *date_str = [id_news objectForKey:@"pubdate"]; NSLog(@"date_str is %@",date_str); NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; [dateFormatter setLocale:usLocale]; [dateFormatter setDateFormat:@"EEE, dd MMMM yyyy HH:mm:ss Z"]; [dateFormatter dateFromString:date_str]; NSDate *date = [dateFormatter dateFromString:date_str]; NSLog(@"date is %@",date); NSDateFormatter *form = [[NSDateFormatter alloc] init]; [form setDateFormat:@"yyyy-MM-dd"]; NSString *dateStr = [NSString stringWithFormat:@"%@", [form stringFromDate:date]]; NSLog(@"dateStr is %@",dateStr); 2013-02-21 16:42:00.943 Tainan[3246:4d1b] date_str is Wed, 20 Feb 2013 00:00:00 GMT 2013-02-21 16:42:00.948 Tainan[3246:4d1b] date is 2013-02-20 00:00:00 +0000 2013-02-21 16:42:00.950 Tainan[3246:4d1b] dateStr is 2013-02-20

2012年8月29日 星期三

NSDateFormatter


部分日期格式的总结:
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init]autorelease];
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
[dateFormatter setDateFormat:@"dd/MM/yyyy hh:mmaaa"];
NSDate *date = [NSDate date];
NSString * s = [dateFormatter stringFromDate:date];
显示效果为:10/05/2010 03:49PM

下面附上几个格式:这个是从Cocoachina找来的:
yyyy:MM:dd G 'at' HH:mm:ss zzz            1996.07.10 AD at 15:08:56 PDT
EEE, MMM d, "yy                                         Wed,july 10, '99
h:mm a                                                     12:08 PM
hh 'o"clock' a,zzzz                                      12 o'clock PM, Pacific Daylight Time
K:mm a, z                                                 0:00 PM, PST
yyyyy,MMMM.dd GGG hh:mm aaa                01996.july.10 AD 12:08 PM

下面是得到当前的年,月,日,时,分,秒:
NSCalendar *cal = [NSCalendar currentCalendar];
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dd = [cal components:unitFlags fromDate:date];
int y = [dd year];
int m = [dd month];
int d = [dd day];
int h = [dd hour];
int m = [dd minute];
int s = [dd second];
日期格式代表意義
yyyy = 年(4位數), yy = 年(最後2位數),MM = 月(1~12),MMM = 月(英文縮寫),MMMM = 月(英文完整)
K = 時(12小時制),H = 時(24小時制),mm = 分,ss = 秒,aa = 午前/午後(AM/PM)
dd = 日,EEE = 星期(英文縮寫),EEEE = 星期(英文完整)