Установка NSDate для конкретной даты, времени и часового пояса - PullRequest
15 голосов
/ 07 сентября 2010

Мне нужно установить 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, компоненты и календари и я не хорошие друзья ...

Ответы [ 2 ]

3 голосов
/ 07 сентября 2010

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

3 голосов
/ 07 сентября 2010

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

...