Кажется, метод setDefaultTimeZone
больше не доступен в NSTimeZone
. Кто-нибудь знает замену этому?
В моем AppDelegate.swift
у меня есть:
NSTimeZone.default = TimeZone(abbreviation: "BST")!
и это работает как задумано, я думаю, потому что во всех других файлах я получаю NSTimeZone
для этого значения
Теперь в моих утилитах у меня есть этот метод:
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
. Он предоставляет функцию для получения convertDate, например
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
.
Кто-нибудь знает, почему это происходит?