你如何以这种格式显示日期? "Jul 18, 2018 at 10:02 AM"

How do you display date in this format? "Jul 18, 2018 at 10:02 AM"

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"

如何格式化才能显示? "Jul 18, 2018 at 10:02 AM"

谢谢!

您需要使用另一个 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)
}

输出:

Jul 18, 2018 at 11:02 AM

请注意,时间将取决于您当地的时区。默认情况下,输出将采用当地时间,因此不要期望输出为 17:02,因为那是 UTC 时区的时间。