Проблема выбора времени с OS4?

У меня есть приложение, которое я обновляю до OS4. В этом я использую выбор времени. Из этого я хочу получить час и минуту как целое число. Это код, который я использовал ранее для этого...

NSDate *selected = [timePicker date];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit| NSMinuteCalendarUnit |NSSecondCalendarUnit;


NSDateComponents *compsDur = [gregorian components:unitFlags fromDate:selected];
int hDur = [compsDur hour];
int mDur = [compsDur minute];
int sDur = [compsDur second];

[gregorian release];

Теперь здесь все работало нормально. Моя проблема в том, что когда я обновляюсь до OS4, если я меняю настройки времени своих телефонов, скажем, с Великобритании на США, я получаю случайное значение, а не то, что ввел пользователь.

Чтобы дать вам конкретный пример, по британскому времени я установил время на 1 минуту, я получаю возвращаемое значение для mDur как 1. Если я затем переведу свой телефон на нью-йоркское время, я получу 19 часов и 6 минут? Что происходит?


person user157733    schedule 03.10.2010    source источник


Ответы (1)


Я думаю, что это может быть связано с недокументированным изменением UIDatePicker в iOS4, где по умолчанию используется (как я думаю) GMT в качестве часового пояса.

Вы можете установить часовой пояс UIDatePicker в системный часовой пояс, чтобы пользователь получил ожидаемый опыт.

yourDatePicker.timeZone = [NSTimeZone systemTimeZone];
person James    schedule 03.10.2010
comment
Спасибо, это, безусловно, похоже на проблему, но ваша строка кода ничего не делает? Где мне это декларировать? Я только что поместил его выше NSDate *selected = [timePicker date]; и я не вижу, чтобы это что-то делало :-( - person user157733; 04.10.2010
comment
Я делаю это, как только настраиваю UIDatePicker в своем методе viewDidLoad UIView. - person James; 04.10.2010
comment
Круто, это работает, спасибо, он устанавливает для моего выбора случайное значение, вы знаете, как установить его на 0 минут 0 часов? - person user157733; 04.10.2010