如何在给定NSDate前两天触发UILocalNotification?
答案 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)];
}