【发布时间】:2012-11-02 15:03:18
【问题描述】:
NSString* dateString = @"2012-04-01T15:37:53Z";
ISO8601DateFormatter *dateFormat = [[ISO8601DateFormatter alloc] init];
[dateFormat setIncludeTime:YES];
NSTimeZone *utcTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSDate* date = [dateFormat dateFromString:dateString timeZone:&utcTimeZone];
STAssertEqualObjects([dateFormat stringFromDate:date timeZone:utcTimeZone], dateString, nil, nil);
上述测试失败
“2012-04-01T16:37:53Z”应该等于“2012-04-01T15:37:53Z”
不知道为什么 stringFromDate:date 返回的 NSString 是 1 小时后,因为两个日期都使用 UTC。
【问题讨论】:
-
可能是因为类别
dateFromString:timeZone:(或其相反)编码错误?还是因为您在一种情况下使用了&utcTimeZone而在另一种情况下使用了utcTimeZone? -
或者设置 dateFormat.defaultTimeZone?
标签: objective-c date iso8601