0

我在显示时间。它会告诉我:TIME :2012-06-18 23:00:00 +0000 但是在使用 NSDateFormatter 之后我不知道为什么它给了我 00:00:00 AM

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateFormat:@"HH:mm:ss a"];

NSLog(@"TIME :%@",self.startDate);

NSDate *date = [NSDate date];
NSString * _startTime = [dateFormatter stringFromDate:date];
NSLog(@"current time : %@",_startTime);
NSString * _startTime1 = [dateFormatter stringFromDate:self.startDate];
NSLog(@"Start time : %@",_startTime1);
[dateFormatter release];

**Result is**

TIME :2012-06-18 23:00:00 +0000
current time : 17:05:41 PM
Start time : 00:00:00 AM
4

1 回答 1

0

您首先NSLog以 GMT 时间输出日期(注意尾随的 +0000)。一个NSDateFormatter对象会将日期格式化为指定的时区。您的NSLog陈述显示,self.startDate在至少一个时区中,存储的日期恰好是上午 00:00:00,并且格式化程序设置为该时区。格式化程序将默认为设备的时区。您可以将格式化程序的时区设置为从 GMT 开始的 0 秒,以查看最后一条NSLog语句中的 23:00:00 PM:

[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
于 2012-06-18T17:36:26.457 回答