iOS NSDateformatter问题 - dateFromString无法按预期正常工作

时间:2011-09-24 13:56:46

标签: ios

以下代码段会产生意外的输出:

段:

    NSString* testDateStr = [[NSString alloc] initWithString:@"2010-04-04 19:11:11"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSLog(@"'%@'", testDateStr);
    NSLog(@"'%@'", [dateFormatter dateFromString:testDateStr]);

输出:

  
    

'2010-04-04 19:11:11'

         

'2010-04-04 09:11:11 +0000'

  

请注意,生成日期的时间是错误的。我在这里做错了吗?

2 个答案:

答案 0 :(得分:3)

NSDateFormatter默认为本地时区。当您打印NSDate对象的description时,它以GMT打印(注意结尾处的+0000)。此代码完全按预期工作。 (当地时区的19:11:11与格林威治标准时间09:11:11相同。)

您可以通过调用setTimeZone:来覆盖NSDateFormatter的时区。

答案 1 :(得分:0)

输出没有错误:看起来您正在使用GMT + 10时区的区域设置中运行。当地时区19:11:11相当于格林尼治标准时间09:11:11(+0000)