紀元的顯示: |
G:顯示AD,也就是公元 |
年的顯示: |
yy:年的後面2位數字 |
yyyy:顯示完整的年 |
月的顯示: |
M:顯示成1~12,1位數或2位數 |
MM:顯示成01~12,不足2位數會補0 |
MMM:英文月份的縮寫,例如:Jan |
MMMM:英文月份完整顯示,例如:January |
日的顯示: |
d:顯示成1~31,1位數或2位數 |
dd:顯示成01~31,不足2位數會補0 |
星期的顯示: |
EEE:星期的英文縮寫,如Sun |
EEEE:星期的英文完整顯示,如,Sunday |
上/下午的顯示: |
aa:顯示AM或PM |
小時的顯示: |
H:顯示成0~23,1位數或2位數(24小時制) |
HH:顯示成00~23,不足2位數會補0(24小時制) |
K:顯示成0~12,1位數或2位數(12小時制) |
KK:顯示成0~12,不足2位數會補0(12小時制) |
分的顯示: |
m:顯示0~59,1位數或2位數 |
mm:顯示00~59,不足2位數會補0 |
秒的顯示: |
s:顯示0~59,1位數或2位數 |
ss:顯示00~59,不足2位數會補0 |
S: 毫秒的顯示 |
Stackooverflow 上的一个回答:
/* x number xx two digit number xxx abbreviated name xxxx full name a AM/PM A millisecond of day c day of week (c,cc,ccc,cccc) d day of month e day of week (e,EEE,EEEE) F week of month g julian day (since 1/1/4713 BC) G era designator (G=GGG,GGGG) h hour (1-12, zero padded) H hour (0-23, zero padded) L month of year (L,LL,LLL,LLLL) m minute of hour (0-59, zero padded) M month of year (M,MM,MMM,MMMM) Q quarter of year (Q,QQ,QQQ,QQQQ) s seconds of minute (0-59, zero padded) S fraction of second u zero padded year v general timezone (v=vvv,vvvv) w week of year (0-53, zero padded) y year (y,yy,yyyy) z specific timezone (z=zzz,zzzz) Z timezone offset +0000 sql y-M-d H:m:s rss [E, ]d MMM y[y] H:m:s Z|z[zzz] */
This is my comment for date parsing. I use the following, where toDateUsingFormat uses an NSDateFormatter with the passed in string. I do not use a locale, because rss dates are not localized.
if ( 0 == [string rangeOfString:@","].length ) { result = [string toDateUsingFormat:@"d MMM y H:m:s z"]; } else { result = [string toDateUsingFormat:@"E, d MMM y H:m:s z"]; }
Edit:
I use getObjectValue: instead of dateFromString.
NSDate *result = nil; NSError *error = nil; [dataFormatter getObjectValue:&result forString:dateString errorDescription:&error];
tips:
1、设置时间格式为 “MMM dd,yyyy” ,真机调试的时候会出现 “Mar. 24,2015”这样的情况(模拟器不会出现),多出了一个点,加上这一句就好了。
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];