来自字符串的 Swift DateFormatter 日期在 NSDateFormatter 曾经工作的地方失败
Posted
技术标签:
【中文标题】来自字符串的 Swift DateFormatter 日期在 NSDateFormatter 曾经工作的地方失败【英文标题】:Swift DateFormatter date from string fails where NSDateFormatter used to work 【发布时间】:2019-11-20 10:24:26 【问题描述】:我有一个日期字符串:"2017-09-27T13:03:47.86+00:00" 和 dateFormat:"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZZZZZ" 用于 NSDateFormatter但返回 nil 与 DateFormatter.date(string: )
有什么想法可以与 swift DateFormatter 一起使用吗?
【问题讨论】:
好吧,你应该从修复格式开始。你看到你期望的毫秒位数和它们的实际数量了吗? 把你的 dateString 写在你的日期格式上面,看起来正确吗?为什么有这么多“S”?为什么有这么多“Z”?规范说了什么:多少,哪个字母与期望:unicode.org/reports/tr35/tr35-31/…? @LarmeZZZZZ
格式正确。
【参考方案1】:
如果您将语言环境设置为en_US_POSIX
,格式字符串应该可以工作,但是 2 个S
就足够了
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSZZZZZ"
不过我建议使用专用的ISO8601DateFormatter
let dateString = "2017-09-27T13:03:47.86+00:00"
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
let date = formatter.date(from: dateString)
【讨论】:
Dateformatter 对我来说太慢了。我不知道这个 ISO8601 版本。它是一个很好的选择。以上是关于来自字符串的 Swift DateFormatter 日期在 NSDateFormatter 曾经工作的地方失败的主要内容,如果未能解决你的问题,请参考以下文章
来自网络请求 JSON 的 Swift 字符串有换行符 - 如何删除换行符?
来自字符串的 Swift DateFormatter 日期在 NSDateFormatter 曾经工作的地方失败
来自html字符串的iOS Swift 4图像未在WKWebView中加载
如何大写来自 Swift 子类的 UILabel 的文本属性