2011-07-17 33 views
25

如何將以下日期「Sun Jul 17 07:48:34 +0000 2011」 轉換爲以下格式「2011-07-17 07:48:34」?轉換目標中的日期格式C

我使用NSDateFormatter如下所示,但它沒有工作。結果爲null。

NSDateFormatter *objDateFormatter = [[NSDateFormatter alloc] init]; 
[objDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
[objDateFormatter dateFromString:sDate]; 
+0

請問您可以添加co你用NSDateFormatter嗎? –

+0

[iOS 4.1中的NSDate格式](http://stackoverflow.com/questions/3716384/nsdate-format-in-ios-4-1) – 2011-07-17 13:44:19

+1

[iPhone:將日期字符串轉換爲相對時間戳]的可能重複( http://stackoverflow.com/questions/902950/iphone-convert-date-string-to-a-relative-time-stamp) – Ayaz

回答

2

如果SDATE是你的字符串是格式爲「太陽07月17日7時48分34秒+0000 2011」,你必須將其轉換成的NSDate。然後,您可以使用第二個NSDateFormatter將此日期轉換爲您所需的格式「yyyy-MM-dd HH:mm:ss」。

如果你需要弄清楚轉換所需要的字符串,這個網站有很大的參考: http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns

例如「太陽報7月17日7時48分34秒+0000 2011」可以

[dateFormatter setDateFormat:@"EEE MMM d HH:mm:ss ZZZ yyyy"]; 

被解析爲一些建議,非標日期,如「七月」的(應該是七月)可以在這裏做的問題。將純C中需要的部分用strftime()轉換會更快。 見參考:http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.ibm.etools.iseries.langref.doc/rzan5mst263.htm

然後,您可以轉換unix時間戳回來的NSDate與

[NSDate dateWithTimeIntervalSince1970:] 

使用下日期/時間分析通常是高達10倍的速度更快。 NSDateFormatter是一隻慢狗。

+0

與日期格式模式的不錯鏈接 - 非常有用 – gbk

59

你有你的日期格式錯誤的,你傳遞日期的風格在這裏是說明不同的修飾符的文檔:Date Format Patterns

爲了解析日期「太陽報7月17日7時48分34秒+ 0000 2011" ,你需要一個格式像這樣:

[dateFormat setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 

爲了得到它爲以下格式:‘2011-07-17 7時48分34秒’,這裏是全碼:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss ZZZ yyyy"]; 
NSDate *date = [dateFormatter dateFromString:sDate]; 

// Convert to new Date Format 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSString *newDate = [dateFormatter stringFromDate:date]; 
+0

thanx它的工作:) – farajnew

+0

一個問題。 ..它在模擬器上正常工作,但它不適用於真正的設備? – farajnew

+0

你在設備上有什麼問題?它會給出錯誤嗎?崩潰?你需要描述你的問題... –