objective-c - 从 NSString : How to ignore the timezone 转换为 NSDate

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

最佳答案

数据不会改变,时区不会影响日期本身,它只会影响日期显示,因此表示 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/

相关文章:

ios - 错误 : Assigning to 'CLLocationCoordinate2D' from incompatible type 'id'

ios - 无法从 Swift 3 中的 JSON 获取指定值

ios - 大规模并行计算ios

iphone - CHCSV 错误 : unable to allocate memory for length

ios - 用 UITextField 替换 UiNavigationItem.Title 的错误布局

c - 打印/写入 wchar_t?

java - 为什么我们在 Web 浏览器和 java swing 中无法获得相同的特定字体显示

javascript - 为什么我不能在不使用字符串的情况下将 Dog Face (u+1f436) 字段添加到我的对象?

iOS self.navigationController.toolbar 位置到顶部没有改变

ios - 实现 JBChartView 时遇到问题