数据格式器结果

Dateformatter Result

这是我的 DateFormatter 代码

 let formatter = DateFormatter()
 formatter.dateFormat = "MMM dd"
 let dateString = formatter.string(from: date)

现在:

po dateString 

给出结果“5 月 18 日”

po date gives the result 2021-05-17 18:30:00 +0000

这对我来说没有意义 - 为什么 Date May 17 2021 被转换为 String May 18?

这取决于所用格式化程序的当前时区,基于 0 的使用

formatter.timeZone = TimeZone(abbreviation: "UTC")

一个Date物体记录了地球上任何地方的瞬间。

根据您所在的时区,该时刻将在不同的日历日 (day/month/year)。

默认情况下,日期格式化程序在设备的当前时区工作。

当您使用 po dateprint(date) 记录日期时,日期的默认描述使用 ISO 8601 日期格式以 UTC 格式显示该日期。根据用户的时区,UTC 中的日期可能与本地时区中的日期不同

如果您想在用户本地时区记录日期,请使用 po date.description(with: Locale.current)po DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .medium)