如何在考虑夏令时的情况下指定 RRule?

Cer*_*rin 3 python icalendar rrule

我正在尝试使用python-dateutil创建一个规则来安排一个事件,以便每天在美国东部标准时间下午 6 点运行。

我正在使用的当前规则很简单:

byhour:23;
Run Code Online (Sandbox Code Playgroud)

这在非夏令时渲染为下午 6 点,但在夏令时渲染为晚上 7 点。

如何更改此设置以考虑 DST?

我在 (Linux) 上运行的服务器当前配置为 EST 并且已经考虑了 DST,因此看起来 python-dateutil 忽略了这一点并基于 UTC 进行计算。

Arn*_*aud 5

您不应该为此使用 BYHOUR。

您只需要一个 RRULE:FREQ=DAILY您的 DTSTART 需要使用时区 ID 的本地时间,而不是 UTC,即类似于:

DTSTART;TZID=America/New_York:20160805T180000
RRULE:FREQ=DAILY
Run Code Online (Sandbox Code Playgroud)