看起来NSTimeZone
中的setDefaultTimeZone
方法已不再可用。有人知道替代方法吗?
在我的AppDelegate.swift
文件中,我有以下代码:
NSTimeZone.default = TimeZone(abbreviation: "BST")!
我猜原本的意图应该是如愿以偿的,因为在其他所有文件中,我得到的 NSTimeZone
值都被设置成了这个值。
现在,在我的 Utils 中,我有这个方法:
static func getDate(_ dateStr: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
// dateFormatter.timeZone = TimeZone(abbreviation: "GMT")
let date = dateFormatter.date(from: dateStr)!
return date
}
假设我输入 2016-10-07
,它会返回 2016-10-06 23:00
。为什么?如果您取消注释上面代码中的行,就可以修复它。但我不想在每个地方都使用这行代码。
例如,在我的项目的其他部分中,我使用了CVCalendar
。它提供了一个获取转换日期的函数,如下所示:
func didSelectDayView(_ dayView: DayView, animationDidFinish: Bool) {
selectedDay = dayView
selectedDate = dayView.date.convertedDate()!
}
这里发生了与之前相同的情况...也就是我点击了 2016-10-08
,selectedDate
变成了 2016-10-07 23:00
。
NSTimeZone.Default
在任何地方都打印出 Europe/London
。
有人知道为什么会这样吗?