我正在安排像这样的本地通知
+ (void) addLocalNotification: (Event *) event {
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = event.scheduleTime;
localNotif.alertBody = @"Time to apply drops\nPlease press view to see details";
localNotif.soundName = ALARM_SOUND_FILE;
localNotif.timeZone = [NSTimeZone localTimeZone];
localNotif.applicationIconBadgeNumber = 1;
NSDictionary * dict = [NSDictionary dictionaryWithObjectsAndKeys:event.number,LN_EVENT_KEY, ACTION_EVENT, LN_ACTION_KEY, nil];
localNotif.userInfo = dict;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
然而,在上周末时钟前进之后,在时钟前进之前安排的通知将在一小时后开始,即19:00而不是18:00
苹果文档称,要获得“挂钟”时间,请将时区设置为如上所述。
欢迎任何建议。
答案 0 :(得分:2)
因此,我没有添加24小时的时间间隔,而是使用了..
+ (NSDate *) addOneDayToDate: (NSDate *) date {
return [currentCalendar dateByAddingComponents:oneDay toDate:date options:0];
}
其中
oneDay = [[NSDateComponents alloc] init];
[oneDay setDay:1];
currentCalendar = [NSCalendar currentCalendar];
除非日期介于午夜和时钟通常在凌晨2:00左右变化的时间之外,否则大多数情况下都适用。由于日期时间将在此之后,因此不需要逻辑。