ios - 如何在 iOS 中保存带时区的日期时间?

标签 ios swift nsdate swift4

我是 iOS 开发新手,作为一名 Android 开发人员,我习惯使用一个对象来保存给定时区的日期时间(来自 Joda-Time 库)。

阅读有关日期和时间的 iOS 文档 (https://developer.apple.com/documentation/foundation/dates_and_times) 后,我仍然对应该使用哪个类来保存日期时间存有疑问。给定 Date/NSDate 类描述“一个特定的时间点,独立于任何日历或时区。”它看起来非常无用,因为它与时区无关,并且没有时区的时间没有任何意义,因为它没有任何上下文。

我真正的问题(TL;DR):

我有一个数据库,其中日期时间以 UTC 格式存储,如 "yyyy-MM-dd hh:mm:ss"。我想用某种 DateFormatter 初始化一个对象(格式为“yyyy-MM-dd hh:mm:ss”的字符串)加上时区(UTC)以轻松转换为我想要的任何时区(以显示给用户的默认时区时间)。我怎样才能在 iOS 中实现这一点?

编辑:假设我有一个带有标题和开始时间的类事件。标题是一个字符串,开始时间应该是什么?

最佳答案

您使用 DateFormatter为此。

let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
formatter.timeZone = TimeZone(secondsFromGMT: 0)

formatter.locale 设置用户的当前区域设置,formatter.dateFormat 设置所需的日期格式。在您的情况下yyyy-MM-dd HH:mm:ss

简单地调用它:

let utcDateFromServer = "2017-01-01 22:10:10"
let date = formatter.date(from: utcDateFromServer)

关于ios - 如何在 iOS 中保存带时区的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995219/

相关文章:

ios - 从 NSOrderedSet 中提取 NSManagedObject 属性值

ios - 尝试在 iPhone 上以模态方式呈现 UIImagePickerController 时崩溃

swift - UIVisualEffectView 上的圆角半径

swift - 如何在 Swift 中更改当天的小时和分钟?

ios - 查找给定月份开始工作日的日期的工作日

iOS & Obj-C 奇怪的格式化字符串到 NSDate

ios - 使用tableview在文本字段上方显示最后一条短信

ios - 使用 CocoaPods 在 Swift 中发布通用二进制 iOS 框架

ios - 如何在 Storyboard中设置条件静态 tableview 单元格内容?

ios - 如何在 Swift 中设置委托(delegate)