我正在使用以下代码将日期格式为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仅按日期解析日期并且不添加任何时间信息?
答案 0 :(得分:6)
数据不会改变,时区不会影响该日期本身,只会影响日期显示,因此格林尼治标准时间13:00表示的日期与格林威治标准时间14:00的日期相同
您不应该关心时区,而是将日期转换为设备当前时区使用
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
这将设置设备的时区