我正在使用以下代码将日期格式为 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 只解析日期而不添加任何时间信息?
最佳答案
数据不会改变,时区不会影响日期本身,它只会影响日期显示,因此表示 13:00 GMT 的日期将具有与 14:00 GMT +1 相同的显示
您不应该关心时区,而是将日期转换为设备使用的当前时区
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
这将设置设备的时区
关于objective-c - 从 NSString : How to ignore the timezone 转换为 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308371/