2

我正在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 只解析日期而不添加任何时间信息?

4

1 回答 1

6

数据不会改变,时区不会影响该日期本身,它只会影响日期显示,因此显示 13:00 GMT 的日期将具有相同的显示日期,即 14:00 GMT +1

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

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];

这将设置设备的时区

于 2012-07-03T09:56:11.853 回答