2012-10-13 288 views
0

我給出一個日期:解析日期NSDateFormatter

2012-10-11T23:14:00-04:00 

我使用這種格式NSDateFormatter解析:

yyyy-MM-dd'T'HH:mm:ss-ZZ 

但它返回零

+0

請顯示您正在使用的代碼。沒有這個,我們很難得到幫助。 –

+0

@JeffreyBlake所有相關內容都在帖子中。如果你認爲你需要更多的信息,那麼你的問題不足以回答。如果好奇,請閱讀下面的答案。 – 0xSina

+0

我很高興你得到了你正在尋找的答案,但從這個問題已經結束的事實來看,我似乎很清楚,我並不是唯一一個認爲多一點解釋纔會被批准的人。 FWIW,我留下了評論,因爲我看到了接近的投票和贊成票 - 我試圖對付他們,假設您可以相應地改進問題。 –

回答

1

您的日期格式錯誤。如果您要轉換的字符串中有冒號,則必須在格式字符串中輸入5 Z字符,這是正確的用法。另外,你不能將+/-作爲格式的一部分,因爲你不能保證只有日期+或 - 格林尼治標準時(至少在你談論/格式/時)。

所以,正確的格式字符串將yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ:只有使用

NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZZ"]; 
NSDate* date = [formatter dateFromString:@"2012-10-11T23:14:00-04:00"]; 
NSLog(@"Date: %@", date); // This correctly logs Date: 2012-10-12 03:14:00 +0000 

2個ž字符可在RFC 822格式,和你的日期字符串必須看起來像:2012-10-11T23:14:00-0400(即無時區偏移上的小時/分鐘分隔符)。示例字符串中的時區是ISO-8601。欲瞭解更多信息,請參閱:http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns