У меня есть метод, который извлекает час и второй компонент из NSDate, разбивая его на свои NSDateComponents. Мой код выглядит следующим образом:Компоненты NSDateComponents: fromDate и Time Zones
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 для британского Summer Time.
Так что, если бы я хотел сравнить сейчас время только с 2 днями открытия и закрытия бездействия, тест терпит неудачу, потому что теперь времени также предшествует дата, тогда как другие два раза будут созданы с базовым годом 2000 года. как сравнивать в таком случае? – marciokoko
Я думаю, что данные о конверсиях-> учитывают часовой пояс календаря.Вы должны иметь возможность делать двустороннее преобразование без потерь при условии, что вы используете один и тот же календарь. –