-2

可能重复:
将日期从 [NSDate 日期] 缩短几个小时

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"M-d-yyyy H:mm"];

NSDate *start= [dateFormatter dateFromString:@"10-24-2012 12:15"];
NSDate *end  = [dateFormatter dateFromString:@"10-24-2012 15:30"];

当我打印出来

   NSLog(@"------main_event start %@", start);
   NSLog(@"-----main_event end %@", end);

结果是

         ---main_event start 2012-10-24 19:15:00 +0000
         ---main_event end 2012-10-24 22:30:00 +0000

现在,看起来时间自动增加了 7 个小时,12:15 变为 19:15,15:30 变为 22:30。

为什么?

4

2 回答 2

1

因为您的设备所在的时区是 UTC-7。

输出是 UTC(因此是+0000),因为单个 NSDate 将始终以 UTC 打印出它的时间。

如果您使用 NSDateFormatter 输出日期,它将考虑您的语言环境。在这里查看我的答案:NSDate date 方法返回错误的结果

于 2012-10-24T00:15:14.527 回答
0

这些都是正确的结果。当您用于NSLog输出NSDate对象时,它以GMT显示。解析是在您当地的时区完成的。NSDate对象始终在GMT中。如果要在本地时区打印 NSDate 对象,则需要NSDateFormatter打印日期。

于 2012-10-24T00:16:36.297 回答