以下代码
NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"MM/dd/yyyy"];
NSString* source = @"11/30/2012";
NSDate* date = [dateFormatter dateFromString:source];
NSLog(@"%@ → %@", source, date);
导致此输出
11/30/2012→2012-11-29 15:00:00 +0000
我预计时间会一样。 (即权利2012-11-30 00:00:00 +0000) ...因为我知道输入时间已经是UTC。因此,如果输出时间也以UTC格式输出,则输出应该是同一时间。这是时区问题吗?左字符串日期应该没有指定时区,NSDate应该输出UTC日期?
答案 0 :(得分:2)
直接打印NSDate将始终以标准格式打印日期和时间,时区为GMT(+0000),而创建时则考虑系统的时区。
您似乎在GMT / UTC之后9小时。
答案 1 :(得分:0)
我想我明白了。
我添加了
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
现在得到
11-30-2012→2012-11-30 00:00:00 +0000
...因为我知道输入时间已经是UTC了。如果NSDate报告UTC的另一个时间,则解析器(NSDateFormatter)解析不正确。