-2

以下代码

    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 日期?

4

2 回答 2

2

直接打印 NSDate 总是会以标准格式打印日期和时间,时区为 GMT (+0000),而创建时会考虑系统的时区。

您似乎比 GMT/UTC 晚了 9 个小时。

于 2013-05-15T14:01:02.453 回答
0

我想我明白了。

我添加了

[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

现在得到

2012 年 11 月 30 日 → 2012 年 11 月 30 日 00:00:00 +0000

...因为我知道输入时间已经是 UTC。如果 NSDate 以 UTC 报告另一个时间,则解析器 (NSDateFormatter) 解析不正确。

于 2013-05-15T14:05:15.033 回答