2015-09-17 6 views
2

Я пытаюсь преобразовать строку в Date, но это приводит к неверной дате.dateFromString() возвращает неверную дату

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "dd MMM YYYY" 
let dt = dateFormatter.dateFromString("17 Sep 2015") 
println("Date : \(dt)") 

Это результат

Date : Optional(2014-12-20 18:30:00 +0000) 

Пожалуйста, дайте мне знать, где я делаю ошибку. Я тоже пробовал использовать другой формат, но он возвращает нуль.

ответ

3

Формат за год неправильный, он должен быть yyyy, а не YYYY.

«Y»: Год (в календаре «Неделя года»). В этом году обозначение используется в календарном году ISO год, как определено ISO 8601, но может использоваться в календарных системах, не связанных с григорианцами, где желательна обработка даты недели. Может не всегда быть таким же значением, как и в календарном году.

См: Date Field SymbolTable.
также: ICU Formatting Dates and Times

0

Ваш формат даты неправильный. Измените его на следующее:

dateFormatter.dateFormat = "dd MMM yyyy" 

Для получения дополнительной информации см. Документацию Date Formatters.

+0

Спасибо. Это сработало. Прежде чем я попытался преобразовать дату в строку с тем же форматом (dd MMM YYYY), и это сработало. Почему это не сработало? –

+1

Из документации: «Общей ошибкой является использование YYYY. Yyyy указывает календарный год, тогда как YYYY указывает год (« Неделя года »), используемый в календарном году ISO год. В большинстве случаев доходность yyyy и YYYY одинаковое число, однако они могут быть разными. Обычно вы должны использовать календарный год ». – Adam

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