这个日期字符串的正确日期格式是啥? [复制]
Posted
技术标签:
【中文标题】这个日期字符串的正确日期格式是啥? [复制]【英文标题】:What is the correct date format for this date-as-a-string? [duplicate]这个日期字符串的正确日期格式是什么? [复制] 【发布时间】:2021-09-10 13:40:39 【问题描述】:后端为我提供了这个日期字符串:2021-09-10T12:57:01.671Z
我需要使用 ios DateFormatter
将该字符串转换为 Date
;为此,我需要设置格式化程序的 dateFormat
属性。
我尝试了各种组合,但都没有运气。具体来说,我正在努力解决.671Z
部分。
正确的日期格式是什么?
【问题讨论】:
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"ISO8601DateFormatter
+ [.withInternetDateTime, .withFractionalSeconds]
formatOptions
应该可以解决问题...
@RajaKishan - 不,这是不正确的。 Z
不应该用引号引起来。为 ISO 8601/RFC 3339 日期正确配置日期格式化程序非常复杂,这就是为什么应该使用 ISO8601DateFormatter
。
那个格式是ISO 8601。
【参考方案1】:
您需要 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 作为日期格式
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
guard let date = dateFormatter.date(from: self) else
// fallback if date is not in correct format
return nil
【讨论】:
Z
不应该用引号引起来。如果你打算这样做,我建议"yyyy-MM-dd'T'HH:mm:ss.SSSX"
,如果格式化程序也将用于为服务器准备字符串表示,请设置dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
。坦率地说,正如 Larme 所说,ISO8601DateFormatter
是更好的解决方案。以上是关于这个日期字符串的正确日期格式是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 日期时间字段中格式化日期时间的正确方法是啥