以下代码段会产生意外的输出:
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'
请注意,生成日期的时间是错误的。我在这里做错了吗?
答案 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)