本地通知未调整时区

时间:2012-08-03 18:54:02

标签: ios

我正在安排一个带有NSDate的本地通知,时间设置为晚上9点,我将通知的时区设置为UTC / GMT。

如果我将设备时区设置为UTC(时间到晚上8点59分),则通知会按照预期在晚上9点触发。

但是,如果我将设备时区设置为美国西海岸(即将其设置为西雅图或Cupertino或PDT等)并将时间设置为1.59pm,或将设备时区设置为美国东海岸并将时间设置为下午4点59分,通知不会分别在下午2点或下午5点开火。

但我期待它应该这样做,因为当它是UTC时间晚上9点,然后在当天晚上9点的当前夏令时,相当于东部时间下午5点和西部时间下午2点。

如果我将设备上的时间设置为8.59pm而设备时区为PDT,则通知将在晚上9点开始,即使我已将通知中的时区设置为UTC / GMT,这是不正确的,因为晚上9点,PDT不是UTC时间晚上9点。

因此,在我看来操作系统忽略了我设置的通知的时区。 有没有人解释为什么它不按预期工作?

由于

2 个答案:

答案 0 :(得分:5)

请参阅timeZone的{​​{1}}属性文档:

  

...如果您将有效的NSTimeZone对象分配给此属性,则为火   日期被解释为自动挂钟时间   当时区发生变化时调整;一个适合的例子   这种情况是一个闹钟。

所以我假设如果您想要通知的绝对时间,则必须指定时区。

答案 1 :(得分:1)

夏令时变化似乎不是这样。我有一些重复的通知,时区设置为localTimeZone,但自上周末时钟前进一小时后,他们将在一小时后开火,即19:00而不是18:00。

似乎在我安排活动时,我必须确定该日期的时区并使用它。

由于