Здесь приведена очищенная версия вашего кода с примером того, как его запускать. Обратите внимание, что я выбрал часовой пояс "from", который myTime
имеет в этом примере
func changeToSystemTimeZone(_ date: Date, from: TimeZone, to: TimeZone = TimeZone.current) -> Date {
let sourceOffset = from.secondsFromGMT(for: date)
let destinationOffset = to.secondsFromGMT(for: date)
let timeInterval = TimeInterval(destinationOffset - sourceOffset)
return Date(timeInterval: timeInterval, since: date)
}
Пример, примечаниечто вам нужно установить локаль, соответствующую часовому поясу для введенной вами даты (myTime
)
let myTime = "2019-11-02 02:00:00"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
if let date = dateFormatter.date(from: myTime), let timeZone = TimeZone(abbreviation: "UTC") {
let offsetedDate = changeToSystemTimeZone(date, from: timeZone)
print(date, Calendar.current.timeZone)
print(offsetedDate, timeZone)
}
2019-11-02 01:00:00 +0000 Европа / Стокгольм (текущий)
2019-11-02 02:00:00 +0000 GMT (исправлено)
Обновление: добавлен параметр для часового пояса для преобразования в