【问题标题】:How to specify an RRule taking into account daylight savings time?如何在考虑夏令时的情况下指定 RRule?
【发布时间】:2016-08-04 15:31:48
【问题描述】:

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

我现在使用的规则很简单:

byhour:23;

这在非夏令时呈现为下午 6 点,但在夏令时呈现为下午 7 点。

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

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

【问题讨论】:

标签: python icalendar rrule


【解决方案1】:

您不应为此使用 BYHOUR。

您所需要的只是一个 RRULE:FREQ=DAILY 您的 DTSTART 需要是本地时间,带有时区 id,而不是 UTC,例如:

DTSTART;TZID=America/New_York:20160805T180000
RRULE:FREQ=DAILY

【讨论】:

  • 这样做不就是不考虑dst吗? UTC 偏移量全年保持不变。
  • 只要你有一个正确的与 America/New_York 对应的 VTIMEZONE 定义,这将考虑 DST 变化
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2012-07-03
  • 2023-03-26
  • 2020-09-12
相关资源
最近更新 更多