NSDatePicker странность часового пояса - PullRequest
5 голосов
/ 27 августа 2011

У меня есть NSDatePicker в моем файле пера.В коде я установил часовой пояс в качестве часового пояса календаря GMT:

[datePicker setTimeZone:[calendar timeZone]];

Меня действительно волнует только время (часы, минуты) выбора даты, которое я заполняю программно:

NSDate *anyDate = [NSDate date];
        NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) fromDate:anyDate];
        [components setHour:hours];
        [components setMinute:minutes];
        NSDate *newDate = [calendar dateFromComponents:components];
        [datePicker setDateValue:newDate];

Это правильно дает желаемый эффект установки времени выбора даты на желаемое время.Таким образом, если часы равны 8, а минуты - 30, средство выбора даты показывает 8:30.Тем не менее, если я наберу 8 в поле часа в средстве выбора даты, оно будет отображаться как 3. Что-то странное происходит с часовыми поясами где-то, но я не уверен, где ...

1 Ответ

8 голосов
/ 27 августа 2011

Похоже, я не первый, кто наткнулся на эту проблему. Решение, для тех, кто заинтересован, я нашел здесь http://www.cocoabuilder.com/archive/cocoa/305254-nsdatepicker-weirdness-with-time.html. Видимо, если вы установите часовой пояс средства выбора даты, но не календарь, вы получите эту проблему. Разрешение таково:

[datePicker setTimeZone:[calendar timeZone]];
[datePicker setCalendar:calendar];
...