我有一个应用程序,可以在预定时间播放闹钟声音。这是一个重复的闹钟,每天都会在同一时间响起。例如:每天早上6点起床。
我首先注意到一个问题是在夏令时转换后。我创建了一个在12月份设置每天早上6点钟响铃的闹钟。到了3月份,闹钟开始在1小时之前响铃(或可能晚些,记不清了)。但当我试图调试问题时,它从未发生过,而且当我坐下来真正深入挖掘它时,我无法再次重现该问题。
最近,当我睡觉时,我已经将手机设置为飞行模式。这似乎更频繁地重现了这个问题。但有时候一切都运行良好。但是,如果我在进入飞行模式后检查闹钟时间,它们将显示比我创建的晚一个小时。NSDate将在我的闹钟表中显示为上午7点,而不是上午6点。但有时它会显示为上午6点。所以我打开闹钟。但第二天早上,闹钟在上午7点响起。
我认为这与夏令时有关,因为手机不知道NSDate对象是否处于夏令时。然而,我的手机上显示的实际时间从未出错过。但我的闹钟却在错误的时间响起。
以下是我的代码示例: 注: timerRec是我数据库中的结构化记录 alarmTime是从数据库中提取的NSDate对象 NSLog值用于调试以查看是否可以打印出错误信息 但当我连接到调试器时,它从未失败过。
任何帮助都将不胜感激。我可以发布其他代码,但主要问题似乎与我如何使用NSDate以及在飞行模式下系统时钟背后的工作方式有关。
谢谢, Kevin
我首先注意到一个问题是在夏令时转换后。我创建了一个在12月份设置每天早上6点钟响铃的闹钟。到了3月份,闹钟开始在1小时之前响铃(或可能晚些,记不清了)。但当我试图调试问题时,它从未发生过,而且当我坐下来真正深入挖掘它时,我无法再次重现该问题。
最近,当我睡觉时,我已经将手机设置为飞行模式。这似乎更频繁地重现了这个问题。但有时候一切都运行良好。但是,如果我在进入飞行模式后检查闹钟时间,它们将显示比我创建的晚一个小时。NSDate将在我的闹钟表中显示为上午7点,而不是上午6点。但有时它会显示为上午6点。所以我打开闹钟。但第二天早上,闹钟在上午7点响起。
我认为这与夏令时有关,因为手机不知道NSDate对象是否处于夏令时。然而,我的手机上显示的实际时间从未出错过。但我的闹钟却在错误的时间响起。
以下是我的代码示例: 注: timerRec是我数据库中的结构化记录 alarmTime是从数据库中提取的NSDate对象 NSLog值用于调试以查看是否可以打印出错误信息 但当我连接到调试器时,它从未失败过。
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString *tempAlarm = [dateFormatter stringFromDate:timerRec.alarmTime];
NSLog(@"scheduleAlarm for firedate: %@", tempAlarm);
[CCUtility scheduleAlarmForDate: timerRec.alarmTime alarmSound:
[CCUtility convertSoundCodeToFileName: [timerRec.soundCode intValue]]
alarmMessage: message repeatInterval: repeatInterval];
任何帮助都将不胜感激。我可以发布其他代码,但主要问题似乎与我如何使用NSDate以及在飞行模式下系统时钟背后的工作方式有关。
谢谢, Kevin