0

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

假设我的服务器和我的所有用户都在同一个时区,这是可行的。但是,假设我有其他用户,America/Pheonix也许America/New_York谁想要获得用户定义的这个事件的发生。我需要能够使用America/Denver时间创建事件,然后以 UTC 将它们返回给用户。相反,我还需要计算用户America/New_York定义的重复事件并将其作为 UTC 返回给用户。

是否存在一个库,我可以给它一个时区和一个rrule并让它根据该时区的规则(比如尊重 DST)生成重复事件?或者可能是第三方 API?

编辑:这是对我的问题的一些澄清。

假设我有一个重复性事件,每周五上午 9 点发生。如果我将此事件设置在科罗拉多州,则此事件发生的时间将与亚利桑那州的时间略有不同,亚利桑那州一年中的 5 个月没有夏令时。所以在我的数据库中,我需要存储时区,并且我需要一些方法来根据该时区的规则生成事件。这是我坚持的部分,寻找一种基于时区规则生成事件的方法。

4

1 回答 1

1

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

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

您唯一需要做的就是在每次出现时保留原始时区 - 日期和时间是不够的 - 然后只需将日期/时间快速转换为另一个时区,当您需要将其显示到不同的用户。

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

于 2018-06-04T14:49:07.147 回答