ISO8601日期格式化程序1970-01-01 00:00:00发布



如何处理新年和ISO8601作为年份组件返回去年。

令我恐惧的是,我意识到ISO8601DateFormatter将1977年作为1978-01-01 00:00:00 的一年

过了一段时间才意识到这一点。事实证明,这并没有错。尽管如此,考虑到1978年的具体年份,格式化后的1977年回归令人震惊。

我甚至不需要时间戳。如何可靠地检索指定的年份,而不必在每个日历日期上添加一秒钟?

import Foundation
let datestring = "1978/1/1"
var formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "UTC")
formatter.formatOptions = [.withFullDate]
let date2 = formatter.date(from: datestring) ?? Date()
print(date2)
var calendar = Calendar(identifier: .iso8601)
var year = calendar.component(.year, from: date2)
var month = calendar.component(.month, from: date2)
var day = calendar.component(.day, from: date2)
var era = calendar.component(.era, from: date2)
print("year (year) month (month) day (day) era: (era)")
===
1978-01-01 00:00:00 +0000
year 1977 month 12 day 31 era: 1

默认情况下,日历实例将具有本地时区。您可以通过打印print(calendar.timeZone.abbreviation() ?? "UNKNOWN")来看到这一点。在我的情况下(在美国华盛顿州西雅图(;PDT";。如果你只需将日历时区设置为UTC,它就会打印出你所期望的内容:

1978年1月1日1时代:1

相关内容

  • 没有找到相关文章

最新更新