2011-08-27 18 views
5

Tengo un NSDatePicker en mi archivo de punta. En el código, lo fijo es la zona horaria de ser la zona horaria del calendario GMT:NSDatePicker rareza de zona horaria

[datePicker setTimeZone:[calendar timeZone]]; 

lo único que realmente importa el tiempo (horas, minutos) en el selector de fechas, que me pueblan programación:

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

Este correctamente tiene el efecto deseado de establecer el tiempo de los selectores de fecha a la hora que deseo. Entonces, si las horas son 8 y los minutos son 30, el selector de fecha muestra 8:30. Sin embargo, si escribo un 8 en el campo de la hora del selector de fecha, aparece como 3. Algo raro está pasando con zonas horarias en algún lugar, pero no estoy seguro de dónde ...

+0

¿Tiene un formateador de fecha conectado al selector de fecha? – jtbandes

Respuesta

8

Parece que no soy el La primera persona que tropieza con este problema. La solución, para aquellos que están interesados, encontré aquí http://www.cocoabuilder.com/archive/cocoa/305254-nsdatepicker-weirdness-with-time.html. Aparentemente, si configuras la zona horaria de un selector de fechas pero no del calendario, obtienes este problema. La resolución es la siguiente:

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

Simplemente me ayudó a resolver el mismo problema. ¡Gracias por publicar sus hallazgos! –

+0

Seguramente más simple y más correcto establecer el 'locale' del selector de fecha en la configuración regional actual. – matt