这个日期字符串的正确日期格式是啥? [复制]

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 日期时间字段中格式化日期时间的正确方法是啥

日期格式不正确 java

如何实现word中的表格内连续不断日期更新?

创建函数以使当前日期以没有时间戳的字符串格式显示的最有效方法是啥? [复制]

在 Java 中创建日期的正确方法是啥? [复制]

传递字符串对象时使用 apache poi 格式化日期