2011-08-27 13 views
5

Mam plik NSDatePicker w moim pliku końcówki. W kodzie, ustawić to strefa czasowa będzie GMT kalendarza Strefa czasowa:Dzielność stref czasowych NSDatePicker

[datePicker setTimeZone:[calendar timeZone]]; 

ja tylko troszczą się o czas (godzina, minuta) na datepicker który I wypełnić programowo:

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]; 

to poprawnie ma pożądany efekt ustawienia czasu selektora na czas, który chcę. Jeśli więc godziny to 8, a minuty to 30, selektor daty pokazuje 8:30. Jeśli jednak wpiszesz 8 w polu godziny selektora dat, wyświetli się jako 3. Coś dziwnego dzieje się z czasami w niektórych strefach czasowych, ale nie jestem pewien, gdzie ...

+0

Czy posiadasz formatator daty dołączony do selektora daty? – jtbandes

Odpowiedz

8

Wygląda na to, że nie jestem pierwsza osoba, która natknie się na tę kwestię. Rozwiązanie, dla tych, którzy są zainteresowani, znalazłem tutaj http://www.cocoabuilder.com/archive/cocoa/305254-nsdatepicker-weirdness-with-time.html. Wygląda na to, że jeśli ustawisz strefę czasową selektora daty, a nie kalendarza, pojawi się ten problem. Rozdzielczość jest następująca:

[datePicker setTimeZone:[calendar timeZone]]; 
[datePicker setCalendar:calendar]; 
+1

Pomógł mi rozwiązać ten sam problem - dzięki za przesłanie wyników! –

+0

Z pewnością prostsze i bardziej poprawne ustawienie "locale" wyboru daty w bieżącym locale. – matt

Powiązane problemy