【发布时间】:2011-04-18 05:58:27
【问题描述】:
我在 NSDateFormatter 的帮助下将 NSString 转换为 NSDate。现在代码在所有带有设备和模拟器的操作系统中都可以正常工作,但它在英国、美国地区创建了不同的输出。这是我正在使用的代码。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString=[NSString stringWithString:@"2010-09-05 04:00:00"];
NSDate *dateObj = [dateFormatter dateFromString:dateString];
实际日期为:2010-09-05 04:00:00
美国输出:2010-09-04 21:00:00 -0700
似乎问题出在 TimeZone/Locale 某处,但不知道解决方案。 我也试过了:
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
但无法摆脱问题。
是否有任何简单的方法可以从 NSString 获取 NSDate 作为字符串实际表示的,而不会受到 TimeZone 的影响。我只想获得 NSDate,因为它出现在 NSString 中,日期和时间没有变化。有什么办法吗? 提前致谢。
【问题讨论】:
-
您是否在创建 dateObj 之前设置了时区?
-
是的。我已经设置了 [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];首先然后使用 dateFormatter 将 NSString 转换为 NSDate
标签: iphone nsdate nsdateformatter