0

定期的なローカル通知のために正午 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];

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];
4

1 に答える 1

1

カレンダーのタイムゾーンを 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];
于 2010-09-14T01:25:26.133 に答える