NSDateFormatter没有意义

时间:2011-12-17 17:59:09

标签: ios date nsdateformatter

我有以下日期:month = December,day = 01,year = 2011.日期作为NSString给出,格式为“111201”(YYMMdd)。现在我想用NSDateFormatter将此字符串解析为NSDate对象:

self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateFormat:@"YYMMdd"];
NSDate* date = [self.dateFormatter dateFromString:strDate];

“111201”的输出为“2011-11-30 23:00:00 +0000”。这对我没有意义。

这怎么可能?我期待“2011-12-01 23:00:00 +0000”。

2 个答案:

答案 0 :(得分:3)

当你在调试器中显示NSDate对象或通过NSLog输出它们的值时,它们总是显示为GMT日期和时间(这就是结尾处+0000的含义)。

您当地的时区似乎是'+0100'(西欧?)所以日期格式化程序在'2011年12月1日00:00 am +0100'运行并正确创建NSDate。但是在显示时,NSDate(只是一个没有时区信息的单一时间点)在GMT中显示 - 相当于提前一小时,即'2011年11月30日23:00 pm +0000'。

如果您真的想将'111201'转换为'2011年12月1日00:00 am +0000',请将日期格式化程序的时区设置为GMT,如下所示:

self.dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

答案 1 :(得分:0)

尝试将此添加到日期格式化程序中以更正GMT的时区:

self.dateFormatter.timeZone = [NSTimeZone systemTimeZone];