iPhone上的绝对GMT日期

时间:2010-09-13 23:57:16

标签: iphone date notifications local gmt

我正试图获得一个代表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];

1 个答案:

答案 0 :(得分: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];