iPhone 上的绝对 GMT 日期
Posted
技术标签:
【中文标题】iPhone 上的绝对 GMT 日期【英文标题】:Absolute GMT date on iPhone 【发布时间】:2011-04-11 22:33:33 【问题描述】:我正在尝试获取一个代表格林威治标准时间中午的日期,以便定期发出本地通知。
我需要这个本地通知在使用该应用程序的任何人的确切时间触发。
到目前为止,我正在尝试这个:
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】:将日历的时区设置为 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];
【讨论】:
这是否类似于我上面的编辑,您只需创建一个日期,其中代表这个时间的纪元秒数?该死,谁能想到这个约会的东西会如此棘手? 是的,我认为您的编辑也可以。每个人都会从 1970 年格林威治标准时间得到相同的偏移量,所以每个人都会同时开火。两者都应该工作(我想......!)以上是关于iPhone 上的绝对 GMT 日期的主要内容,如果未能解决你的问题,请参考以下文章