2012-08-13 24 views
0

得到的字符串我有一个[self.post post_time]的NSDate与2012-08-02T08值:57:52.152713 + 00:00我无法从NSDate的

NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; 
[formatter setDateFormat:@"yyyy-mm-dd"]; 
NSLog([formatter stringFromDate:[self.post post_time]]); 

它不工作。问题是什么?

+0

它看起来像self.post post_time返回零。 – 2012-08-13 07:52:56

+0

不;它返回2012-08-02T08:57:52.152713 + 00:00 – Burak 2012-08-13 07:56:59

+0

请检查我的答案,谢谢! – holex 2012-08-13 08:29:09

回答

0

第一,时区确实让你头疼,因为NSDateFormatter可以识别以下格式的时区,即+0000GMT+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对象,然后根据你愿意,你可以格式化日期输出。

+0

谢谢,它的工作原理。 – Burak 2012-08-13 22:20:24

1

你的代码对我的作品

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss.SSSz"]; 
NSDate *myDate = [df dateFromString: @"2012-08-02T08:57:52.152713+00:00"]; // simulate your attribute 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
NSLog(@"%@", [formatter stringFromDate:myDate]); 
+1

它适用于[NSDate日期],但不适合我的价值。 2012-08-02T08:57:52.152713 + 00:00 – Burak 2012-08-13 07:56:36

+0

不,NSDate值。我正在用post_time = [attributes valueForKeyPath:@“post_time”]从JSON中读取它; – Burak 2012-08-13 08:03:07

+0

你确定你不是NSDate吗? – WhiteTiger 2012-08-13 08:07:17