Абсолютная дата по Гринвичу на iPhone - PullRequest
0 голосов
/ 14 сентября 2010

Я пытаюсь получить дату, которая соответствует полудню по Гринвичу, для повторяющегося локального уведомления.

Мне нужно, чтобы это локальное уведомление срабатывало в точный момент для любого, кто использует приложение.Пока что я пробую это:

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setHour:12];
[dateComps setMinute:0];
[dateComps setMonth:1];
[dateComps setDay:1];
[dateComps setYear:2010];

NSDate *localDate = [calendar dateFromComponents:dateComps];
NSTimeInterval timeZoneOffset = [[NSTimeZone defaultTimeZone] secondsFromGMT];
NSTimeInterval gmtTimeInterval = [localDate timeIntervalSinceReferenceDate] - timeZoneOffset;
NSDate *gmtDate = [NSDate dateWithTimeIntervalSinceReferenceDate:gmtTimeInterval];

localNotification.fireDate = gmtDate;

Однако это не работает.Есть предложения?

Редактировать :: Будет ли это работать, если я не укажу часовой пояс в уведомлении:

localNotification.fireDate = [NSDate dateWithTimeIntervalSince1970:1284483600];

1 Ответ

1 голос
/ 14 сентября 2010

Работает ли установка часового пояса календаря на GMT?

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setHour:12];
[dateComps setMinute:0];
[dateComps setMonth:1];
[dateComps setDay:1];
[dateComps setYear:2010]; 

[calendar setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate *gmtDate = [calendar dateFromComponents:dateComps];
...