2015-11-25 5 views
0

Добрый день! Я пытаюсь сделать выбор даты, используя this диалог выбора даты. Теперь у меня возникла проблема с настройкой defaultDate Option, для этого требуется NSDate, поэтому я сделал это.Swift 2.1 - NSDateFormatter Weird bug

let date = NSDate() 
let formatter1 = NSDateFormatter() 
formatter1.dateFormat = "MMM dd" 
formatter1.timeZone = NSTimeZone(abbreviation: "GMT") 
formatter1.timeZone = NSTimeZone(forSecondsFromGMT: 28800) 
let gmt8TimeZone = formatter1.stringFromDate(date) 
let dateToday = formatter1.dateFromString(gmt8TimeZone) 
print("\(gmt8TimeZone) - \(dateToday!)") 

DatePickerDialog().show("Choose Date", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", defaultDate: dateToday!, datePickerMode: UIDatePickerMode.Date) { (date) -> Void in 
    self.dateSelected = date 
    self.showTimePicker() 
} 

Проблема заключается в том, не начиная с defaultDate, что я установил, который dateToday. Итак, что я сделал, я печатаю строку даты gmt8TimeZone и dateToday, и это дает мне это Nov 25 - 2000-11-24 16:00:00 +0000, почему это дает мне разные даты? это должно быть одно и то же право? Что я сделал не так?

+0

строка, извлеченная из даты, и сама печать объекта nsdate дает разные значения. Я предполагаю, что объект NSDate принимает значение по умолчанию +0000 GMT. –

+0

@LEVIS OGCPAS Почему вы меняете часовой пояс? –

+0

Вся дата, которую пользователь отправляет, должна быть от GMT + 8, у пользователей разные часовые пояса на их телефонах, поэтому я хочу сделать ее в форме. –

ответ

1

Просто укажите NSDate() для параметра defaultDate.

NSDate - это в основном временная метка, фиксированная и абсолютная точка во времени, и не привязана ни к одному времени. NSDate() абсолютно, полностью, сейчас.

Когда вы играете с NSDateFormatter, чтобы «исправить» его, вы переходите из мира абсолютной метки времени, чтобы войти в мир строк «yyyy-mm-dd ...», которые действительно требуют, чтобы часовые пояса интерпретировались как точки во времени , И поскольку вы возитесь с ним, ваша дата дрейфует.