NSDate输出不正确

时间:2012-10-24 00:13:01

标签: objective-c ios cocoa-touch nsdate

  

可能重复:
  Getting date from [NSDate date] off by a few hours

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。

为什么?

2 个答案:

答案 0 :(得分:1)

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

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

如果您使用NSDateFormatter输出日期,则会考虑您的区域设置。请在此处查看我的回答:NSDate date method returns wrong result

答案 1 :(得分:0)

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