0

我有一个 [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]]);

它不起作用。问题是什么?

4

2 回答 2

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]);
于 2012-08-13T07:48:41.783 回答
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具有正确日期的对象,然后您可以根据需要格式化输出日期。

于 2012-08-13T08:17:55.150 回答