UILocationNotification不遵守夏令时

时间:2013-04-03 08:28:55

标签: iphone xcode

我正在安排像这样的本地通知

+ (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

苹果文档称,要获得“挂钟”时间,请将时区设置为如上所述。

欢迎任何建议。

1 个答案:

答案 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左右变化的时间之外,否则大多数情况下都适用。由于日期时间将在此之后,因此不需要逻辑。