让我们说我的应用程序用户设置了一个重复发生的事件。他的时区为America/Denver
,因此我将其与rrule
一起存储,以确定何时发生重复。
这可以假设我的服务器和所有用户都在同一时区。但是,我们假设我有其他用户,America/Pheonix
和America/New_York
想要了解用户定义的此事件的发生情况。我需要能够使用America/Denver
时间创建事件,然后以UTC格式将它们返回给用户。相反,我还需要计算America/New_York
中用户定义的重复事件,并将这些事件作为UTC返回给用户。
是否存在可以为其提供时区和rrule
的库,并根据该时区的规则(如尊重DST)生成重复事件?或者也许是第三方API?
编辑:这是我的问题的一些清晰度。
我们说我每周五上午9点都会发生一次反复发生的事件。如果我在科罗拉多州设置此事件,那么此事件发生的时间将与亚利桑那州的时间略有不同,亚利桑那州在科罗拉多州的一年中的5个月中没有DST。所以在我的数据库中,我需要存储时区,我需要一些方法来根据该时区的规则生成事件。这是我坚持的部分,找到了一种根据时区规则生成事件的方法。
答案 0 :(得分:1)
不,你不是。 "时区的规则"与事件的产生无关。每周五上午9点举行的活动"无论夏令时是否活跃,全年都将是上午9点。换句话说,你可以(并且应该)完全忽略rrule部分的DST。我需要一些方法来根据该时区的规则生成事件
您唯一需要做的就是保持原始时区以及每次出现 - 日期和时间不够 - 然后只需在需要显示时即时将日期/时间转换为另一个时区它给不同的用户。
我之前使用过Moment.js和Moment Timezone处理日期,但你可能还有其他选择。