当我运行以下代码时
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
print(dateFormatter.string(from: Date(timeIntervalSince1970: 0)))
这被打印出来:
01/01/1970 08:00:00
应该是:
01/01/1970 00:00:00
怎么了?
答案 0 :(得分:1)
Date(timeIntervalSince1970:)
按照给定的秒数创建一个相对于1970年1月1日00:00:00 UTC 的日期。 DateFormatter
默认根据您当地的时区格式化日期。显然您处于格林尼治标准时间+8时区,因此“ 00:00:00 UTC”为 您的时钟上的“ 08:00:00”。
您可以为日期格式化程序分配其他时区,如果 需要。要打印相对于UTC使用的格式化日期
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) // <--- HERE
print(dateFormatter.string(from: Date(timeIntervalSince1970: 0)))
答案 1 :(得分:1)
尝试一下,您将根据您的TimeZone获取日期:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy HH:mm:ss"
let timeZoneDifference = TimeInterval(TimeZone.current.secondsFromGMT())
let date = dateFormatter.string(from: Date(timeIntervalSince1970: 0))
print(date)
let dateAccoringToMyTimeZone = dateFormatter.string(from:
Date(timeIntervalSince1970: timeZoneDifference))
print(dateAccoringToMyTimeZone)