我试图为下一个发生的未来时间获取一个Date
对象,其中UTC时间中的小时是18。但是,我的代码没有按预期工作。我有以下资料:
let dateComponents = DateComponents(timeZone: TimeZone(abbreviation: "GMT"), hour: 18)
let date = Calendar.current.nextDate(after: Date(), matching: dateComponents, matchingPolicy: .nextTime)
print(date)
问题是这会导致
2019-02-09 23:00:00 +0000
日期是指下一次出现的时间,其中小时为18英寸
EST
。因为
dateComponents
将时区设置为UTC,将小时设置为18,所以我早就预料到日期会是2019-02-09 18:00:00 +0000
。此外,更改时区似乎对找到的nextDate
没有影响。为什么nextDate函数不遵守传递给它的
dateComponents
中设置的时区? 最佳答案
我住在格林尼治时间,在操场上运行这个程序会产生您期望的结果。您正在设置日期组件的时区,但我可以想象您自己的日历(calendar.current)设置为EST。您需要在EST与GMT中说明所需结果的偏移量
关于swift - Swift Calendar.current.nextDate timeZone问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54602750/