Это моя версия кода Бикрамджита Сингха в Swift (работал только для меня, используя «UTC» в качестве аббревиатуры).Надеюсь, это поможет:
func testTimeZone(){
let currentLocalTime = NSDate()
let sourceTimeZone = NSTimeZone(abbreviation: "UTC")
let triggerTimeZone = NSTimeZone.systemTimeZone()
let sourceGTMOffset = sourceTimeZone?.secondsFromGMTForDate(currentLocalTime)
let triggerGTMOffset = triggerTimeZone.secondsFromGMTForDate(currentLocalTime)
let interval = triggerGTMOffset - sourceGTMOffset!
let finalDate = NSDate(timeInterval: NSTimeInterval.init(interval), sinceDate: currentLocalTime)
Swift.print("Current local time: \(currentLocalTime)")
Swift.print("Source Time Zone (GTM): \(sourceTimeZone)")
Swift.print("Trigger Time Zone (System Time Zone): \(triggerTimeZone)")
Swift.print("Source GTM Offset: \(sourceGTMOffset)")
Swift.print("Trigger GTM Offset: \(triggerGTMOffset)")
Swift.print("Interval (Source - Trigger Offsets): \(interval)")
Swift.print("Final Date (Current + interval): \(finalDate)")
}
ОБНОВЛЕНИЕ
Я действительно нашел более короткий способ получить дату, этот способ работал лучше для меня:
var currentDate: NSDate {
let currentLocalTime = NSDate()
let localTimeZone = NSTimeZone.systemTimeZone()
let secondsFromGTM = NSTimeInterval.init(localTimeZone.secondsFromGMT)
let resultDate = NSDate(timeInterval: secondsFromGTM, sinceDate: currentLocalTime)
return resultDate
}