2016-07-19 6 views
-1

Как преобразовать строку в NSDate, а затем обратно в строку?Преобразование строки в NSDate, неправильный часовой пояс

Я пытался делать это так:

//String to NSDate 
let dateString = "2016-07-07T18:09:41Z" 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
let date = dateFormatter.dateFromString(dateString) 

//NSDate to String 
let formatter = NSDateFormatter() 
formatter.dateFormat = "HH:mm" 
formatter.locale = NSLocale(localeIdentifier: "en") 
let time = formatter.stringFromDate(date!) 

И время в моем случае это 21:09, хотя это было 18:09. Настройка локали ничего не делает. Наверное, я делаю что-то очень не так, просто не знаю, что.

ответ

1

Locale не устанавливает часовой пояс, он просто помогает установить формат в соответствии с локали и предпочтениями пользователя. Явно установите timeZone, чтобы получить нужные результаты. Например, чтобы установить часовой пояс в системном часовом поясе, попробуйте:

dateFormatter.timeZone = NSTimeZone.systemTimeZone() 

formatter.timeZone = NSTimeZone.systemTimeZone() 
+0

Спасибо, что работает – Xernox

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