我遇到了一些特殊情况,我不确定它为什么会发生或如何处理它。
let formatter = DateFormatter()
formatter.dateFormat = "h:mma"
let timeString = "8:00am"
let date = formatter.date(from: timeString)!
如果用户将时间设置为使用 12 小时制,则此代码有效。如果他们将设备设置为 24 小时制,它就会崩溃。
如何让它独立于用户的设置工作?
最佳答案
您必须将语言环境更改为标准 POSIX 语言环境:
formatter.locale = Locale(identifier: "en_US_POSIX")
On iOS, the user can override the default AM/PM versus 24-hour time setting (via Settings > General > Date & Time > 24-Hour Time), which causes NSDateFormatter to rewrite the format string you set, which can cause your time parsing to fail.
请注意,如果您不对数据进行解析/编码,则强制使用特定时间格式是不好的做法。如果您想向用户显示格式化时间,更好的解决方案是使用用户定义的格式:
let formatter = DateFormatter()
formatter.dateStyle = .none
formatter.timeStyle = .short
关于ios - DateFormatter 根据用户时间设置表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43451913/