2016-02-24 7 views
0

Мне нужно хранить Date переменные в CoreData в iOSNSDateFormatter уменьшается день даты

мне нужно хранить только дату без времени, поэтому я сделал форматчик, что отбрасывать время раздела с переменной NSDate. Но у меня есть странный результат: Это мой код:

let dateStr = "2016-02-14 11:27:01" 

    let df2 = NSDateFormatter() 
    df2.timeZone = NSTimeZone.defaultTimeZone() 
    df2.dateFormat = "yyyy-MM-dd HH:mm:ss" 
    print(dateStr) 

    if let date = df2.dateFromString(dateStr) { 
     df2.dateFormat = "yyyy-MM-dd" 
     print("-> \(df2.dateFromString(df2.stringFromDate(date)))") 
    } 

и это выход:

2016-02-14 11:27:01 
-> Optional(2016-02-13 20:00:00 +0000) 

Почему форматировщик уменьшить день один? Я пробовал многие даты с тем же вопросом

+0

Является ли часовым поясом UTC + 4? – vadian

+0

да, но почему? @vadian – wajeeh

ответ

3

Ваш часовой пояс, очевидно, UTC + 4.

Чтобы получить UTC, установите часовой пояс соответственно.

df2.timeZone = NSTimeZone(forSecondsFromGMT: 0) 

Но хотя вы видите дату 4 часа назад объект NSDate обрабатывается корректно в зависимости от часового пояса. Команда print отображает всегда UTC, игнорируя информацию о часовом поясе, потому что NSDate является всего лишь оберткой для номера Double.

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