第一,时区确实让你头疼,因为NSDateFormatter
可以识别以下格式的时区,即+0000
或GMT+1000
,但它不能识别与结肠癌的时区,+00:00
,简单地说,它没有模式。所以,不知何故,你应该从时区部分删除冒号。
秒,您必须使用以下模式输入日期而不是yyyy-mm-dd
,因为此模式不包含您的输入字符串。
NSString *_dateString = @"2012-08-02T08:57:52.152713+00:00";
NSString *_noColonInTimezone = [_dateString stringByReplacingCharactersInRange:NSMakeRange(_dateString.length-3, 1) withString:@""];
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSZZZ"];
NSDate *_date = [_dateFormatter dateFromString:_noColonInTimezone];
NSLog(@"raw date : %@", _date);
它运作良好,已在真机测试,我希望它可以帮助你得到与正确的日期NSDate
对象,然后根据你愿意,你可以格式化日期输出。
它看起来像self.post post_time返回零。 – 2012-08-13 07:52:56
不;它返回2012-08-02T08:57:52.152713 + 00:00 – Burak 2012-08-13 07:56:59
请检查我的答案,谢谢! – holex 2012-08-13 08:29:09