iPhone 上的绝对 GMT 日期

发布于 2024-09-19 07:11:30 字数 888 浏览 6 评论 0原文

我正在尝试获取代表格林尼治标准时间中午的日期,以用于定期本地通知。

我需要这个本地通知在准确的时刻向使用该应用程序的任何人发出。

到目前为止,我正在尝试这样做:

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

I'm trying to get a date that represents noon GMT for a recurring local notification.

I need this local notification to fire at the exact moment to anyone using the app.

So far, I'm trying this:

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;

This isn't working, however. Any suggestions?

Edit::
Will this work if I don't specify a time zone on the notfication:

localNotification.fireDate = [NSDate dateWithTimeIntervalSince1970:1284483600];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑕疵 2024-09-26 07:11:46

将日历的时区设置为 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];

Does setting the calendar's timezone to GMT work?

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];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文