2010-04-04 5 views
2

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

вот код

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

У меня есть функция, которая проходит переменную «СТРОКА-ДАТЫ», а именно, dateStr = @"0:0"; я не могу видеть, что это не так - как это работает для меня! (iphone 3.1.3), но он не работает для моего тестера (ipod touch 3.1.3)

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

Спасибо, много. любые идеи?

ответ

1

Возможно, проблема локали.

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

NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
[dateFormat setLocale:usLocale]; 
[usLocale release]; 
+0

это, похоже, решил. Спасибо всем за ответы. –

0

Вы устанавливаете DateFormat в

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

пока вы передаете его СТРОКЕ-ДАТЫ, как dateStr = @"0:0";?

Try переходящая в dateStr = @"00:00";, который фактически соответствует формату вашего форматировщика

0

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

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

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