使用 UTC 实现规则

如何解决使用 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?