Настройка NSDate на конкретную дату, время и часовой пояс

Мне нужно установить NSDate на определенную дату, время и часовой пояс для приложения iPhone.

Пример кода ниже отлично работает на iOS 4, поскольку setTimeZone был представлен с iOS 4. Как я могу легко установить NSDate в дату, время и часовой пояс без использования setTimeZone, чтобы его можно было использовать на устройствах iOS 3.0?

    NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2010];
[comps setMonth:8];
[comps setDay:24];
[comps setHour:17];
[comps setMinute:5];
[comps setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"] ];

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *referenceTime = [cal dateFromComponents:comps];

Угадайте, что это должно быть просто, но каким-то образом NSDate, компоненты и календари и я не очень хорошие друзья...

Ответы

Ответ 1

Интересно, можно ли задать часовой пояс для объекта NSCalendar, который используется для создания NSDate из NSDateComponents. Я не пробовал этого и не знаю, будет ли это работать, но, вероятно, стоит попробовать.

Ответ 2

NDates не имеют понятия часовых поясов сами по себе. В основном это секунды с определенной произвольной даты в GMT. Таким образом, вы не можете дать им часовой пояс. Если часовой пояс важен, вам нужно будет отслеживать время и часовой пояс.