2014-01-19 5 views
0

NSDateFormatter преобразования в неправильную дату не знает, почемуНеправильного Конверсия

Я преобразование следующей строки 19-01-2014 1:06:54 PM в дату, используя следующий код

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"DD-MM-YYYY hh:mm:ss a"]; 
NSDate *date = [dateFormat dateFromString:startTime]; 

И я получаю следующий результат, который incorrect.Please предложить некоторые вещи

описание Печать даты: 2014-01-04 7:36:54 +0000

ответ

0

Печать NSDate вернет описание по умолчанию - поскольку NSDates не учитывает локаль, часовой пояс и т. Д., По умолчанию используется UTC +/- 0000 (обратите внимание на +0000).

+0

, но все еще есть большой разрыв между датой 4 и 19 ?? – user2814822

+0

Это потому, что ваша строка формата даты неверна (см. Ответ martin) – John

+0

Кстати, в отношении моего ответа - хороший метод помощника, который мне нравится использовать для отладки, - '- [NSDate descriptionWithLocale:]' – John

1

Неверная часть «DD-MM-YYYY» в вашей строке формата, должна быть «dd-MM-yyyy». (См http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns для полного списка всех форматов даты.)

Кроме того, вы должны установить «POSIX локаль», чтобы быть независимыми от пользователя локал/региона настройки:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm:ss a"]; 
[dateFormat setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]]; 
NSDate *date = [dateFormat dateFromString:startTime]; 
+0

Вы также можете установите часовой пояс и календарь * вместо * локали, если это имеет смысл. – trojanfoe

+0

@trojanfoe: Это две разные вещи. Настройка языка POSIX полезна, если вход имеет фиксированный * формат *, сравните http://stackoverflow.com/questions/6613110/what-is-the-best-way-to-deal-with-nsdateformatter-locale -особенность. - Установка часового пояса может быть выполнена, если сама дата не должна интерпретироваться в локальном часовом поясе. Я не знаю, если это тоже проблема. –