如何解决Swift中的日期格式,用于往返日期/时间模式
我正在使用swift5开发一个iOS项目,遇到如下日期格式错误。
“日期字符串与格式化程序预期的格式不匹配。”
我正在将openapi-generator用于swift5(https://github.com/OpenAPITools/openapi-generator/tree/master/samples/client/petstore/swift5/default),它会生成以下格式化程序。
static let withoutSeconds: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
return formatter
}()
private func setup() {
calendar = Calendar(identifier: .iso8601)
locale = Locale(identifier: "en_US_POSIX")
timeZone = TimeZone(secondsFromGMT: 0)
dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
}
override init() {
super.init()
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
override public func date(from string: String) -> Date? {
if let result = super.date(from: string) {
return result
}
return OpenISO8601DateFormatter.withoutSeconds.date(from: string)
}
效果很好,但日期时间格式存在上述问题
我们的api返回以下json字符串作为日期时间,我无法使其在上面的代码中解析此字符串。
"createdDate": "2020-03-01T05:42:15.0503394","updatedDate": "2020-09-02T07:06:56.6389018",
根据此文档,从我们的api返回的datetime字符串似乎具有往返于指定符(https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings#Roundtrip)
尝试了很多事情,但到目前为止还没有运气。
谢谢您的帮助。
解决方法
请仔细查看日期字符串。没有时区(代表Z
指示符)?
应该使用这种日期格式
yyyy-MM-dd'T'HH:mm:ss.S
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。