簡體   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