2014-01-23 52 views
3

我的python後端在UTC日期時間使用isoformat()方法,這會導致看起來像2014-01-14T18:07:09.037000的字符串。繼其他例子,我想從這些字符串(以JSON數據包向上傳遞)創建NSDates:(?這應該是分數秒)iOS從Python的datetime.isoformat()輸出創建NSDate?

NSDateFormatter *dateFormatter = [NSDateFormatter new]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:S"]; 
NSLog(@"cycle_base %@", myFields[@"cycle_base"]); 
self.cycleBase = [dateFormatter dateFromString: myFields[@"cycle_base"]]; 
NSLog(@"cycleBase %@", self.cycleBase); 

我試過變種在S部分格式字符串,但無濟於事。我總是沒有回來。我究竟做錯了什麼?

回答

5

iOS 7遵循Unicode Technical Standard #35,這是一個格式模式列表。

在本文檔中,您會發現小數秒的格式字符串大小寫爲S

NSString *string = @"2014-01-14T18:07:09.037000"; 

NSDateFormatter *formatter = [NSDateFormatter new]; 
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.S"; 

NSDate *date = [formatter dateFromString:string]; 

NSLog(@"%@", date); 

這將爲您提供一個有效的NSDate對象。不要忘記在NSDateFormatter對象上設置適當的時區和區域設置。

+0

Durh和headlap。我讀過UTS#35,但得出了關於'S'的錯誤結論。我認爲s基本上是整數秒,S是浮點秒(積分AND小數部分)。 –

+0

有沒有比這個'dateFormatter.timeZone = [NSTimeZone timeZoneWithAbbreviation:@「GMT」]設置GMT時區更習慣的方式;'? –