NSDateFormatter没有给我正确的

我正在显示时间。 它会告诉我:时间: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 

您的第一个NSLog输出格林尼治标准时间的date(注意尾随+0000)。 NSDateFormatter对象会将date格式化为指定的时区。 您的NSLog语句显示self.startDate中的存储date至less在一个时区为00:00:00 AM,格式化程序设置为该时区。 格式化程序将默认为设备的时区。 您可以将格式化程序的时区从GMT设置为0秒,以查看上次NSLog语句中的23:00:00 PM:

 [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];