ошибка установки даты на uidatepicker - PullRequest
2 голосов
/ 04 апреля 2010

Я был озадачен кодом ниже. Я передаю строковую дату в UIDatePicker, который, похоже, работает на большинстве устройств, но на некоторых он вылетает из приложения.

вот код

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"HH:mm"];
NSDate *date = [dateFormat dateFromString:dateStr];
[timePicker setDate:date];
[dateFormat release];

У меня есть функция, которая передает переменную dateStr следующим образом: dateStr = @"0:0"; Я не вижу, что не так - это работает для меня! (iphone 3.1.3), но он не работает для моего тестера (ipod touch 3.1.3)

Кто-нибудь может увидеть что-то не так с кодом?

Большое спасибо. есть идеи?

Ответы [ 3 ]

1 голос
/ 09 апреля 2010

Вероятно, проблема с локалью.

Попробуйте установить общий языковой стандарт для форматера даты, например

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[dateFormat setLocale:usLocale];
[usLocale release];
0 голосов
/ 15 апреля 2010

Все 12-часовые локали определяют полночь как 12:00. В 24-часовых (также известных как военное время) часах 00:00 определено как полночь.

В вашем примере вы «форсируете» строку с потенциально неизвестным форматом в вашем UIDatePicker.

Проверьте настройки локали и всегда указывайте локаль, соответствующую строковому представлению времени, en_US, da_DK и т. Д.

0 голосов
/ 14 апреля 2010

Вы установили формат даты

[dateFormat setDateFormat:@"HH:mm"];

пока вы передаете его dateStr как dateStr = @"0:0";?

Попробуйте ввести dateStr = @"00:00";, который фактически соответствует формату вашего форматера

...