Ios7 如何在给定日期前两天发出UILocalNotification?

Ios7 如何在给定日期前两天发出UILocalNotification?,ios7,nsdate,uilocalnotification,Ios7,Nsdate,Uilocalnotification,如何在给定NSDate的两天前发出UILocalNotification?假设eventDate是您拥有的日期: NSDate* twoDaysEarlyDate = [[NSDate alloc] initWithTimeInterval:-(86400 * 2) sinceDate:eventDate]; 这忽略了在eventDate之前发生的任何可能的夏令时更改,这对于本地通知来说可能很好 如果您需要使DST更改生效,另一种方法类似于: NSCalendar* currentCalend

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

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

任一选项都根据您的需要而工作。

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

任一选项都根据您的需要而工作。

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

任一选项都根据您的需要而工作。

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

这两个选项都可以根据您的需要使用。

假设给定的日期是“expirationDate”,而“twoDaysBeforeExpirationDate”是触发UILocalNotification的所需日期。然后

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


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

假设给定日期为“expirationDate”,而“twoDaysBeforeExpirationDate”是触发UILocalNotification的所需日期。然后

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


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

假设给定日期为“expirationDate”,而“twoDaysBeforeExpirationDate”是触发UILocalNotification的所需日期。然后

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


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

假设给定日期为“expirationDate”,而“twoDaysBeforeExpirationDate”是触发UILocalNotification的所需日期。然后

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


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

为什么不使用NSCalendar和NSDateComponents正确地完成它呢?只是多了几行…添加了一个考虑DST更改的替代方法。谢谢。为什么不直接使用NSCalendar和NSDateComponents来完成呢?只是多了几行…添加了一个考虑DST更改的替代方法。谢谢。为什么不直接使用NSCalendar和NSDateComponents来完成呢?只是多了几行…添加了一个考虑DST更改的替代方法。谢谢。为什么不直接使用NSCalendar和NSDateComponents来完成呢?只是多了几行…添加了一个考虑DST更改的替代方法。谢谢