从NSString转换为NSDate:如何忽略时区

时间:2012-07-03 09:49:23

标签: objective-c ios unicode nsdate iso8601

我正在使用以下代码将日期格式为2012-06-30的NSString转换为NSDate:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:dateString];

当省略[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]时,NSString中的值为2012-06-29 23:00:00加上一些自动添加的时区信息,这表示系统对当前时区有一些假设。

使用上述方法设置时区时,转换工作正常。

但是,如果用户位于不同的时区,会发生什么?

如何确保iOS仅按日期解析日期并且不添加任何时间信息?

1 个答案:

答案 0 :(得分:6)

数据不会改变,时区不会影响该日期本身,只会影响日期显示,因此格林尼治标准时间13:00表示的日期与格林威治标准时间14:00的日期相同

您不应该关心时区,而是将日期转换为设备当前时区使用

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

这将设置设备的时区