1

我在 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 年 3 月 14 日 00:00:00 的格林威治标准时间。(我的时区是 GMT +08:00)

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

谢谢。

~一月

4

3 回答 3

2

您可以使用设置时区

[formatter setTimeZone:...]

. 或者我会尝试设置格式化程序的语言环境

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"..."];
[formatter setLocale:locale];
于 2011-03-16T07:11:36.187 回答
0

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

NSString *inputDate = @"2011-03-14+0800";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-ddZZZ"];
NSDate *entryDate = [formatter dateFromString:inputDate];
[formatter release]
于 2011-03-16T07:12:46.533 回答
0

请看看这个

NSDateFormatter 返回意外结果

这是苹果推荐的

于 2011-03-16T07:10:55.890 回答