У меня есть метод, который извлекает час и второй компоненты из NSDate, разбивая его на его NSDateComponents. Мой код выглядит следующим образом:
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]];
Моя проблема в том, что я теряю час в конверсии. У меня есть подозрение, что это из-за часовых поясов, но насколько я могу видеть и дату передачи, и используемый календарь - GMT.
Например, если я передаю следующий объект NSDate (это журнал описания [NSDate])...
2010-08-02 08:00:00 +0100
Я ожидаю, что я получу 8 часов и 0 минут, но на самом деле я возвращаюсь на 7 часов.
Мое системное время - GMT, поэтому NSDate выше в настоящее время +0100 для британского летнего времени.