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

Ale*_*exR 2 unicode objective-c iso8601 nsdate ios

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

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [dateFormatter dateFromString:dateString];
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Oma*_*ith 6

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

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

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
Run Code Online (Sandbox Code Playgroud)

这将设置设备的时区