我有一个 [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]]);
它不起作用。问题是什么?
我有一个 [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]]);
它不起作用。问题是什么?
你的代码对我有用
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]);
首先,时区确实让你头疼,因为它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
具有正确日期的对象,然后您可以根据需要格式化输出日期。