2012-10-16 173 views
-1

可能重複:
Is there a simple way of converting an ISO8601 timestamp to a formatted NSDate?
Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?目標C:將ISO 8601日期時間當地日期時間

我試圖日期時間,這是ISO 8601格式轉換int當地時間。 轉換這樣的:

2012-10-15T09:46:16+02:00 

這樣:

2012-10-15 11:46:16 

我嘗試下面的代碼,但給空回

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; 
NSDate *dt = [dateFormatter dateFromString:@"2012-10-15T09:46:16+02:00"]; 
NSString *dateTime= [NSDateFormatter localizedStringFromDate:dt dateStyle:NSDateFormatterShortStyle timeStyle:NSDateFormatterShortStyle]; 
NSLog(@"DATE FORMAT:%@", dateTime); 

任何想法,我在做什麼錯?

+0

請注意,雖然轉換適當的時間應該計算 –

+0

我厭倦了提供的links.none他們的作品。即使在我的例子中它也減去了2小時+2小時。如果時區爲+04:30會發生什麼? 投票表決不錯,您可以再次投票,但請提供答案。 –

+0

工作答案會很好 –

回答

2

您需要使用ISO8601DateFormatter。這是爲此設計的課程。您正在使用的日期格式不僅限於NSDateFormatter日期格式的一種格式。只要它是ISO8601,ISO8601DateFormatter就可以識別和解析日期格式。 http://boredzo.org/iso8601unparser/

+0

庫看起來不錯,但它目前不兼容ARC:https://github.com/boredzo/iso-8601-date-formatter/pull/1 – bdalziel

+1

你可以設置一個編譯器標誌來告訴編譯器不要在該特定文件上使用arc。 – J2theC

+0

很高興知道,非常感謝。看起來這會做到這一點:http://stackoverflow.com/a/8040712/822164 – bdalziel

相關問題