根据特定时区生成套准

时间:2018-06-03 21:25:47

标签: javascript node.js recurring-events rrule

让我们说我的应用程序用户设置了一个重复发生的事件。他的时区为America/Denver,因此我将其与rrule一起存储,以确定何时发生重复。

这可以假设我的服务器和所有用户都在同一时区。但是,我们假设我有其他用户,America/PheonixAmerica/New_York想要了解用户定义的此事件的发生情况。我需要能够使用America/Denver时间创建事件,然后以UTC格式将它们返回给用户。相反,我还需要计算America/New_York中用户定义的重复事件,并将这些事件作为UTC返回给用户。

是否存在可以为其提供时区和rrule的库,并根据该时区的规则(如尊重DST)生成重复事件?或者也许是第三方API?

编辑:这是我的问题的一些清晰度。

我们说我每周五上午9点都会发生一次反复发生的事件。如果我在科罗拉多州设置此事件,那么此事件发生的时间将与亚利桑那州的时间略有不同,亚利桑那州在科罗拉多州的一年中的5个月中没有DST。所以在我的数据库中,我需要存储时区,我需要一些方法来根据该时区的规则生成事件。这是我坚持的部分,找到了一种根据时区规则生成事件的方法。

1 个答案:

答案 0 :(得分:1)

  

我需要一些方法来根据该时区的规则生成事件

不,你不是。 "时区的规则"与事件的产生无关。每周五上午9点举行的活动"无论夏令时是否活跃,全年都将是上午9点。换句话说,你可以(并且应该)完全忽略rrule部分的DST。

您唯一需要做的就是保持原始时区以及每次出现 - 日期和时间不够 - 然后只需在需要显示时即时将日期/时间转换为另一个时区它给不同的用户。

我之前使用过Moment.js和Moment Timezone处理日期,但你可能还有其他选择。