繁体   English   中英

iOS:警报通知的公式

[英]iOS: Formula for alert notifications

我正在尝试编写一个应用程序,它将在日期到达前60小时在通知中心向用户发送警报。 这是代码: localNotif.fireDate = [eventDate dateByAddingTimeInterval:-60*60*60];

我想知道-60*60*60公式是否会在日期前60小时提醒他们? 我根本不确定配方是如何工作的,我想把它设置为在测试日期前10分钟发出警报,然后在确认一切正确后再将其更改回60小时。 有没有人知道用于这两者的公式?

非常感谢任何帮助,谢谢!

原始但易于编码的方法是直接从NSDate添加/减去秒:

NSDate *hourLaterDate = [date dateByAddingTimeInterval: 60*60];
NSDate *hourEarlierDate = [date dateByAddingTimeInterval: -60*60];

您可以通过记录日期来了解它的工作原理:

NSDate *now = [NSDate date];
NSDate *hourLaterDate = [now dateByAddingTimeInterval: 60*60];
NSLog(@"%@ => %@", now, hourLaterDate);

在此方法中,日期被解释为自参考日期以来的秒数。 所以,在内部它只是一个很大的类型double

执行这些计算的繁琐代码但非常正确的方法是将日期解释为日历系统中表示的日期。 与日历计算相同的事情:

NSDateComponents *hour = [[NSDateComponents alloc] init];
[hour setHour: 1];
NSCalendar *calendar= [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDate *hourLaterDate = [calendar dateByAddingComponents: hour 
                                                  toDate: date 
                                                 options: 0];
[hour release];
[calendar release];

这些计算考虑了时区,夏令时,闰年等。根据您的计算方式,它们也可以更具表现力。

在使用任何这些方法之前,您必须确定您需要什么:时间戳或完整的日历日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM