如何解决使用 UTC 实现规则
BLUF:由于 byweekday 在时区之间无法很好地转换,因此在使用 UTC 日期时间变量的 Web 应用程序中实现规则时遇到问题。例如,当在本地时区日期时间落在与该天的 UTC 等效值不同的 day 的 rrules 上使用 byweekday 属性时(由于 UTC 偏移量),rrule“中断”或不能轻易地根据时区偏移量进行移位(即不自动处理日期的移位)。
建议:鉴于远程访问多个时区的多个站点,根据站点的时区在内部使用本地时间而不在内部使用 UTC 是否合理?
TLDR: 我有一个应用程序部署到多个站点,每个站点位于不同的时区。该应用程序通过 Web 应用程序访问,该应用程序根据站点的时区(站点的本地时间)执行用户 I/O。我目前正在使用 UTC 在内部维护所有日期时间数据。我的重复规则是使用客户端的 rrule.js (https://github.com/jakubroztocil/rrule) 和服务器端的 dateutil.rrule (http://labix.org/python-dateutil) 实现的。
当我有一个使用 byweekday 设置的规则时,从本地到 UTC 的 UTC 偏移量计算正确,但 byweekday 设置不再正确(byweekday 天没有移动)。例如,以下规则应该在每个星期日(晚上)当地时间晚上 11:55 运行。
DTSTART:20210411T065500Z RRULE:FREQ=WEEKLY;UNTIL=20220101T080000Z;INTERVAL=1;WKST=MO;BYDAY=SU
UTC 时间是正确的,本地时区偏移量为 -07:00(本地时间 = 前一天晚上 23:55)。但是,规则集是“错误的”,因为第一次出现如下:
格林威治标准时间 2021 年 4 月 11 日星期日 06:55:00
这样,当 rrule DTSTART 移回本地时区(偏移 -07:00)时,规则会运行或触发前一天是星期六。该规则在正确的时间运行,但在错误的日期运行,因为时区小时转换是正确的,但白昼转换不会发生。我宁愿不必手动进行白班。在目标时区实现内部日期时间似乎更容易。也许我错过了规则管理的细微差别?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。