Ios7 如何在给定日期前两天发出UILocalNotification?
如何在给定NSDate的两天前发出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
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更改的替代方法。谢谢