2015-12-01 3 views
0

На моей игровой площадке я создаю простой пример кода, чтобы преобразовать время из моей локальной зоны в "America/Sao_Paulo".Быстрое изменение часовых поясов

let gmtDf: NSDateFormatter = NSDateFormatter() 
gmtDf.timeZone = NSTimeZone.systemTimeZone(); 
gmtDf.dateFormat = "HH:mm:ss" 
let gmtDate: NSDate = NSDate.new() 

print(gmtDate) 

let estDf: NSDateFormatter = NSDateFormatter() 
estDf.timeZone = NSTimeZone(name: "America/Sao_Paulo") 
estDf.dateFormat = "HH:mm:ss" 
let estDate: NSDate = estDf.dateFromString(gmtDf.stringFromDate(gmtDate))! 

print(estDate) 

Весь код работает нормально, но у меня есть вопрос, который связан с кодом output.Why печататься выходной показывают время за 2 часа до моего местного времени. И конвертированное время - в 2000 году.

enter image description here

+0

То же самое здесь !!! при этом курсор на дату показывает UTC, а во время печати - разные. –

ответ

1
  1. NSTimeZone.systemTimeZone вернется GMT времени, если он не может определить часовой пояс системы, я предполагаю, что это то, что здесь происходит, так как вы используете площадку.

  2. Вы используете только час, минуты и секунды для преобразования с даты в строку dateFormat = "HH:mm:ss", чтобы у String не было никакой информации о году, поэтому, когда вы используете это для преобразования обратно в NSDate он показывает 2000, так как у него нет надлежащей информации, чтобы узнать, в каком году.

Смежные вопросы