为什么NSDateFormatter将NSString日期值转换为GMT?

时间:2012-10-19 19:43:08

标签: objective-c nsstring nsdate nsdateformatter

  

可能重复:
  NSDate / NSDateFormatter returning GMT on iPhone iOS 4.3

执行以下代码时

NSString *inputDateString=@"2012-10-19 19:37:54";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *test=[formatter dateFromString:inputDateString];

“test”的值是2012-10-19 23:37:54 +0000而不是相当于inputDateString的日期值。为什么日期被转换为GMT?

编辑:如何获取输入字符串日期并将其转换为等效的NSDate对象?

1 个答案:

答案 0 :(得分:2)

NSDate不存储时区,也不关心它们。 NSDate仅存储自给定参考日期(2001年1月1日)以来经过的时间。当您像这样使用NSDateFormatter时,它会假设在将字符串转换为日期对象时,日期的时区与用户当前时区匹配,但是,当您使用NSLog检查日期时,它没有任何时区信息。但请记住,日期仍然正确并且等于输入值。