NSDateFormatter没有给我正确的答案

时间:2012-06-18 16:18:28

标签: objective-c ios nsdate 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

1 个答案:

答案 0 :(得分:0)

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

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