Как получить смещение часового пояса между UTC и iPhone - Swift 4.2? - PullRequest
0 голосов
/ 26 февраля 2019

Я на Swift 4.2 .Я изо всех сил пытаюсь получить время смещения между UTC и временем от моего iPhone.


У меня есть этот код

extension TimeZone {
    func offsetFromGMT() -> String
    {
        let localTimeZoneFormatter = DateFormatter()
        localTimeZoneFormatter.timeZone = self
        localTimeZoneFormatter.dateFormat = "Z"
        return localTimeZoneFormatter.string(from: Date())
    }
}

func getCurrentTimeZone() -> String{
    return String (TimeZone.current.identifier)
}


var tzOffset = ""
let currentTimeZone = getCurrentTimeZone()
TimeZone.knownTimeZoneIdentifiers.forEach({ timeZoneIdentifier in
    if let timezone = TimeZone(identifier: timeZoneIdentifier)
    {
        //print("\(timezone.identifier) \(timezone.offsetFromGMT())")

        if(timezone.identifier == currentTimeZone){
            tzOffset = timezone.offsetFromGMT()
        }
    }
})

Результат

Если я сделаю

print(tzOffset)

Я получил

-0500

Должно ли оно быть -5, поскольку мой currentTimeZone равен America/Montreal?

Может кто-нибудь дать мне подсказку?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы можете получить текущий часовой пояс, получить количество секунд из GMT и разделить его на 3600.

TimeZone.current.secondsFromGMT() / 3600    // -3 hs America/Sao_Paulo (current) Brazil
0 голосов
/ 26 февраля 2019

это должно быть -0500.

со страницы Википедии

Причина, по которой вместо 4 в нем 4 цифры, заключается в том, что он находится в 24 часахформат, а некоторые часовые пояса измеряются на расстоянии получаса от UTC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...