2011-04-19 84 views
1

下面的代码:NSDateFormatter dateFromString结果没有意义,我

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 GMT,这是我能想到的唯一连接到设定日期的时间。我预计00:00:00。

输入赞赏。

回答

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); 
+0

哇...我不知道的是,在调试UTC/GMT + 0显示的NSDate。我发现NSDate界面非常混乱,我必须说。非常感谢@黑色青蛙! – purplehey 2011-04-19 20:37:04