Tengo un método que extrae la hora y los segundos componentes de un NSDate descomponiéndolo en sus NSDateComponents. Mi código es el siguiente ...Componentes de NSDateComponents: fromDate y Zonas horarias
unsigned hourAndMinuteFlags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[calendar setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSDateComponents* travelDateTimeComponents = [calendar components:hourAndMinuteFlags fromDate:travelDate];
NSString* hours = [NSString stringWithFormat:@"%02i", [travelDateTimeComponents hour]];
NSString* minutes = [NSString stringWithFormat:@"%02i", [travelDateTimeComponents minute]];
Mi problema es que estoy perdiendo una hora en la conversión. Tengo la sospecha de que se debe a zonas horarias, pero por lo que puedo ver, tanto la fecha que se pasa como el calendario que se usa son ambos GMT.
Por ejemplo si paso en el siguiente objeto NSDate (esto es un registro de [Descripción NSDate]) ...
2010-08-02 08:00:00 +0100
espero que llegue a 8 horas y 0 para los minutos, pero de hecho, vuelvo 7 por mis horas.
Mi hora del sistema es GMT, por lo tanto, el NSDate anterior es actualmente +0100 para el horario de verano británico.
Si ahora quisiera comparar el tiempo con 2 horas de apertura y cierre sin fecha, la prueba falla porque ahora el tiempo también está precedido por la fecha actual, mientras que las otras dos veces se crearán con un año base de 2000. Entonces cómo comparar en tal caso? – marciokoko
Creo que la componente de conversión-> fecha tiene en cuenta la zona horaria del calendario.Debería poder hacer una conversión bidireccional sin pérdidas siempre que use el mismo calendario. –