NSDateFormatter行为问题

时间:2011-03-16 07:05:01

标签: iphone nsdate nsdateformatter nstimezone

我在iPhone编程中使用NSDateFormatter时遇到问题。 以下是我的代码段。

NSString *inputDate = @"2011-03-14";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]

我得到的结果是

  

2011-03-13 16:00:00 +0000

这是2011-03-14 00:00:00的GMT等价物。 (我的时区是GMT +08:00)

为什么我会这样?如何获得2011-03-14 00:00:00作为结果?

感谢。

〜扬

3 个答案:

答案 0 :(得分:2)

您可以使用

设置时区
[formatter setTimeZone:...]

。或者,我会尝试通过

设置格式化程序的语言环境
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"..."];
[formatter setLocale:locale];

答案 1 :(得分:0)

请看看这个

NSDateFormatter returns unexpected results

这是Apple推荐的

答案 2 :(得分:0)

您可以尝试将时区添加到原始字符串

NSString *inputDate = @"2011-03-14+0800";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-ddZZZ"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]