gpt4 book ai didi

iphone - 在飞行模式下或 DST 转换后,NSDate 会向后或向前滑动一小时

转载 作者:行者123 更新时间:2023-12-03 20:08:34 26 4
gpt4 key购买 nike

我有一个应用程序,可以在预定时间播放闹钟声音。这被设置为重复警报,每天同时响起。例如:每天早上 6 点起床。

我第一次注意到夏令时转换后出现的问题。例如,我会在 12 月创建一个闹钟,让它在每天早上 6 点响起。 3 月后,闹钟提前 1 小时开始响起(或者可能更晚,记不清了)。但是当我尝试调试问题时,它永远不会发生,当我坐下来真正深入研究它时,我无法重现问题。

最近,当我 sleep 时,我一直将手机设置为飞行模式。这似乎更频繁地重现该问题。但有时一切正常。但是,如果我在进入飞行模式后检查闹钟时间,它们会比我创建的时间晚一个小时。 NSDate 将显示早上 7 点而不是早上 6 点在我的闹钟表上。但有时会显示为早上 6 点。所以我打开闹钟。但第二天早上 7 点闹钟就响了。

我认为这与夏令时有关,而手机不知道它是否处于夏令时NSDate 对象。然而,我手机上显示的实际时间从来没有错过。但我的闹钟在错误的时间响起。

这是我的代码示例:笔记:timeRec 是我的数据库中的结构化记录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 以及系统时钟如何在飞行模式下在幕后工作。

谢谢

凯文

最佳答案

您可能使用的格式在存储日期时不考虑时区。

为什么不直接 NSLog 你的timerRec NSDate 而是使用 NSDateFormatter ?此外,直接记录 NSDate 将在控制台中显示有关 NSDate 的时区+DST 信息,而您使用的 NSDateFromatterMediumStyle 则不会(使用此日期样式显然不是用于调试有关 TZ 和 DST 的此类问题的最佳样式) !)

关于iphone - 在飞行模式下或 DST 转换后,NSDate 会向后或向前滑动一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com