问题描述
这是我的 DateFormatter 代码
let formatter = DateFormatter()
formatter.dateFormat = "MMM dd"
let dateString = formatter.string(from: date)
现在:
po dateString
给出结果“May 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
物体记录了地球上任何地方的瞬间。
该时刻将处于不同的日历日(日/月/年),具体取决于您所在的时区。
默认情况下,日期格式化程序在设备的当前时区工作。
当您使用 po date
或 print(date)
记录日期时,日期的默认描述会使用 ISO 8601 日期格式以 UTC 格式显示该日期。根据用户所在的时区,UTC 中的日期可能与本地时区位于不同的日历日
如果您想在用户的本地时区记录日期,请使用 po date.description(with: Locale.current)
或 po DateFormatter.localizedString(from: date,dateStyle: .medium,timeStyle: .medium)