使用 DateFormatter 会产生一个相差一天(实际上是 12 小时)的结果。使用以下代码始终生成显示为前一天的日期。一段时间以来,我一直在许多应用程序中得到这个,但最后才开始深入研究它。
extension Date
{
func display() -> String
{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMMM dd, yyyy"
print(dateFormatter.locale)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let txt = dateFormatter.string(from: self)
print(txt)
return txt
}
}
这方面的其他问题建议更改语言环境,因此添加了代码,但我检查了语言环境和实际日期。如果我在日期上加上 8 小时,我会得到正确的显示结果,但添加的时间少于这个时间不会有任何作用。一些日期是从联系人应用程序中的生日字段中检索的,这会产生时间为 00:00:00 UTC 的日期。看来我需要将日期转换为当地时间?设备上的时区设置为本地时区(太平洋)。这看起来还不错,但是从日期选择器中检索到的日期不是 UTC 时间,而是当地时间。自从使用日历类并尝试提取 .timezone 组件说“