我有一个[self.post post_time] NSDate,其值为2012-08-02T08:57:52.152713 + 00:00
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"yyyy-mm-dd"];
NSLog([formatter stringFromDate:[self.post post_time]]);
它不起作用。有什么问题?
答案 0 :(得分: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 :(得分:0)
首先,时区让您感到头疼,因为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
对象,然后您可以格式化日期你想要的输出。