如何在给定的NSDate前两天发出UILocalNotification?

时间:2014-03-01 02:43:34

标签: ios7 nsdate uilocalnotification

如何在给定NSDate前两天触发UILocalNotification?

2 个答案:

答案 0 :(得分:2)

假设eventDate是你的日期:

NSDate* twoDaysEarlyDate = [[NSDate alloc] initWithTimeInterval:-(86400 * 2) sinceDate:eventDate];

忽略在eventDate之前发生的任何可能的夏令时变化,这可能适用于本地通知。

如果您需要将DST更改生效,另一种方法类似于:

NSCalendar* currentCalendar = [NSCalendar currentCalendar];
NSDateComponents* offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:-2];
NSDate* twoDaysEarlyDate = [currentCalendar dateByAddingComponents:offsetComponents toDate:eventDate options:0];

根据您的需要,任一选项都可以使用。

答案 1 :(得分:1)

假设给定日期为'expirationDate'且'twoDaysBeforeExpirationDate'是触发UILocalNotification的所需日期。然后

NSDate* expirationDate=nil;
NSDate *twoDaysBeforeExpirationDate = [expirationDate dateBySubtractingRequiredDays:2];


- (NSDate *) dateBySubtractingRequiredDays: (NSInteger) dDays
{
    return [self dateByAddingDays: (dDays * -1)];
}