日期格式化结果

问题描述

这是我的 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 dateprint(date) 记录日期时,日期的默认描述会使用 ISO 8601 日期格式以 UTC 格式显示该日期。根据用户所在的时区,UTC 中的日期可能与本地时区位于不同的日历日

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