NSDateFormatter dateFromString结果对我来说没有意义

时间:2011-04-19 18:08:24

标签: cocoa nsdate nsdateformatter

以下代码:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd";
NSDate *tempDate = [dF2 dateFromString:@"2011-07-10"];
DebugLog(@"Temp Date %@", tempDate);

结果如下:

临时日期2011-07-10 05:00:00 +0000

我不明白05:00:00来自哪里?我在中央时区使用此代码,这是-5格林尼治标准时间,这是我能想到的唯一连接到日期设置的时间。我期待00:00:00。

投入赞赏。

1 个答案:

答案 0 :(得分:3)

创建NSDate 07-10-2011时,NSDataFormatter默认为当前时区。在你的例子中是GMT-5。

还要记住,调试器将以UTC / GMT + 0显示NSDate;

如果您想创建UTC午夜:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
dateFormatter.dateFormat = @"yyyy-MM-dd";
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate *tempDate = [dateFormatter dateFromString:@"2011-07-10"];
NSLog(@"Temp Date %@", tempDate);