年的顯示: |
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 |
小時的顯示: |
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"];