【发布时间】:2013-05-15 13:59:38
【问题描述】:
以下代码
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 日期?
【问题讨论】:
-
是的,这是时区问题。
-
该帖子没有正确且简洁的答案被检查为正确。检查的答案太长了,没有重点。
-
再澄清一点:如果您知道输入时间是UTC,那么您需要将NSDateFormatter的时区设置为UTC,否则它会默认为另一个时区(这里不确定,可能是当前的时区设备)。如果您希望在输入时间时使用另一个时区,则应将 NSDateFormatter 设置为该时区。 (所以这当然与 NSDate 无关)
标签: ios nsdateformatter