PhoneGap iOS LocalNotifications夏令时

我在iOS中使用(臭名昭着的) Drew Dahlman的Phonegap本地通知 。 它似乎工作。

我从来没有写过一个Objective-C的行,而不愿意(这可能是为什么我现在有麻烦!),但我认为这个插件是不正确的,想要解决它,如果可能的话。

当我在13:00设置通知时,它会正确启动。 但是,如果夏令时正在进行,通知将在14:00,晚一个小时发生。

这是因为时区没有被考虑在内吗? 德鲁提到时区被设置为+0000不是一个问题,但这是错误的信息? 我应该更新插件来处理时区和夏令时? 或者在我自己的代码中处理夏令时,并简单地设置DST为活动状态时的date-1小时?

我想我必须在LocalNotification.m中更新这些行的第二行,但正如我所说,我不确定要更新到哪一行

UILocalNotification *notif = [[UILocalNotification alloc] init]; notif.timeZone = [NSTimeZone defaultTimeZone]; 

啊,似乎有一个奇怪的问题,当通知设置。

示例1:当我做这样的事情时,在duedate :30

 var d = new Date(duedate).getTime(); d = new Date(d); plugins.localNotification.add({ date: d, ... 

通知被logging为21:30,如下所示:

Notification Set: 2013-04-08 21:30:00 +0000

例2:如果我这样设置duedate :(现在是21点30分)

 var d = new Date().getTime(); 

通知被logging为20:30,如下所示:

Notification Set: 2013-04-08 20:30:00 +0000

但是 ,在第二个例子中,由于白天节约,通知在21:30发生。

解决scheme (各种)

我将不得不添加或减去从现在到当我想通知触发时间的差异,而不是专门设置date。

这很有趣。 我在创build插件时处理的最大的事情之一是JS和OBJ-C解释时间的奇怪方式。 根据文档,你可以使用systemTimeZone但这systemTimeZone系统设置的插件是依靠。 这是用户设置和手机正在使用的时间。

即使认为它默认为+ 000GMT,它仍然在系统时间内考虑到这一点,并进行调整+0500或你所在的区域。

UILocalNotification不使用正确的时区

NSTimeZone:localTimeZone和systemTimeZone有什么区别?

两者都处理这个 – 默认情况下插件是使用系统时间。