我正在 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
问题似乎出在时区/区域设置的某个地方,但不知道解决方案。
我也尝试过:
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
但无法摆脱这个问题。
是否有任何简单的方法可以从 NSString 获取 NSDate 作为字符串实际表示的内容,而不受 TimeZone 的影响。我只想获取 NSString 中出现的 NSDate,日期和时间没有变化。有什么办法吗?
提前致谢。
这取决于您如何再次输出日期。如果您使用 NSDateFormatter,您将得到相同的结果。如果您只是通过调用输出日期[date description]
由于包含有关本地时区的信息,输出会有所不同。
正确的用法是:
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];
NSString* finalDateString = [dateFormatter stringFromDate:dateObj];
[dateFormatter release];
Output:
2010-09-05 04:00:00
我已经在几个时区测试了这段代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)