根据特定时区生成规则

Generating rrules based on certain timezones

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

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

是否存在我可以为其指定时区和 rrule 并让它根据该时区规则(例如遵守夏令时)生成重复事件的库?或者第三方 API?

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

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

I need some way to generate the events based on that time zone's rules

不,你不知道。 "time zone's rules" 与事件的产生无关。 "every Friday at 9am" 的活动全年都在上午 9 点举行,无论是否启用夏令时。换句话说,您可以(并且应该)完全忽略规则部分的夏令时。

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

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