你如何以这种格式显示日期? “2018 年 7 月 18 日上午 10:02”

Posted

技术标签:

【中文标题】你如何以这种格式显示日期? “2018 年 7 月 18 日上午 10:02”【英文标题】:How do you display date in this format? "Jul 18, 2018 at 10:02 AM" 【发布时间】:2018-07-30 22:28:29 【问题描述】:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2018-07-18T17:02:02.614Z")

日期描述打印:2015-06-18 17:02:02 +0000 Playground 似乎很自然地在右侧输出:“Jun 18, 2015 at 10:02 AM”

如何格式化它以显示它? “2018 年 7 月 18 日上午 10:02”

谢谢!

【问题讨论】:

【参考方案1】:

您需要使用另一个DateFormatter 格式化date(现在是Date 实例)。您应该使用日期和时间样式,而不是固定格式。

而且“UTC”不是语言环境,而是时区。但你不需要那个。但是在解析固定格式的日期字符串时,您应该使用en_US_POSIX 的特殊语言环境。

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = dateFormatter.date(from: "2018-07-18T17:02:02.614Z")
if let date = date 
    let outputFormatter = DateFormatter()
    outputFormatter.dateStyle = .medium
    outputFormatter.timeStyle = .short
    let output = outputFormatter.string(from: date)
    print(output)

输出:

2018 年 7 月 18 日上午 11:02

请注意,时间取决于您当地的时区。默认情况下,输出是本地时间,所以不要指望输出是 17:02,因为那是 UTC 时区的时间。

【讨论】:

谢谢,它有效!我在 dateFormatter 中设置样式,难怪它什么也没做。 为什么不 if let date = dateFormatter.date(from: "2018-07-18T17:02:02.614Z") @Sh_Khan 这也有效。我刚刚将if let 添加到现有代码中。有时中间变量有助于调试。

以上是关于你如何以这种格式显示日期? “2018 年 7 月 18 日上午 10:02”的主要内容,如果未能解决你的问题,请参考以下文章

以这种格式显示时间和日期[重复]

2018年7月29日

EXCEl表格里如何输入自定义格式的日期

如何以 12 小时 AM/PM 格式显示 JavaScript 日期时间?

如何格式化数字 0..9 以显示 2 位数字(它不是日期)

2018年7月10日