如何处理 cron 触发器石英中夏令时的用户时区?

2024-01-04

我的服务 api 接受石英作业的开始日期和要执行的作业的月份日期。 在内部,我将其转换为 cron 表达式并保存在quartz 中。

例如,PST 中的用户今天(2017 年 11 月 3 日)提交了如下作业请求。

{
"start": "2017-11-03T18:00:00-07:00",
"dayOfMonth" : 15
}

此处,用户希望安排一个作业,从 2017 年 11 月 3 日开始,每月 15 日下午 6 点触发。所以第一天石英会火的时间是2017年11月15日。 这就是上面的请求转换为 cron 表达式的方式0 0 18 15 * ? *, 哪个是对的。 QRTZ_CRON_TRIGGERS 表如下所示。

正如您所注意到的,time_zone_id 保存为 GMT-07:00,但一旦 11 月 5 日夏令时开始,它必须是 GMT-08:00。否则我的石英工作将提前一小时触发。事实上,当我查询下一个火灾时间,我确实得到了 1510794000000 这确实是2017 年 11 月 15 日星期三 17:00:00(下午) 美国/洛杉矶时区 (PST)

我们如何处理这个 time_zone_id 问题?

P.S:我使用的 cronTrigger 没有这个概念preserveHourOfDayAcrossDaylightSavings这是由提供的CalendarIntervalTrigger.


不要使用 offset 来表示时区。相反,您可以要求用户传递时区,例如“美洲/洛杉矶”。然后你可以使用http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronScheduleBuilder.html#inTimeZone(java.util.TimeZone) http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronScheduleBuilder.html#inTimeZone(java.util.TimeZone)创建具有正确时区的触发器。

inTimeZone(TimeZone.getTimeZone("USER_ENTERED_VALUE")

最后,当您查看 QRTZ_CRON_TRIGGERS 表时,TIME_ZONE_ID 的值将是美洲/洛杉矶

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理 cron 触发器石英中夏令时的用户时区? 的相关文章

随机推荐

  • 如何从 WPF 中的 app.config 获取 List 值集合?

    以下示例填充项目控制与列表备份目录我从代码中得到的 如何更改此设置以便从 app config 文件中获取相同的信息 XAML
  • Ruby 上类似 Django 的框架?

    Django 作为一个框架是一个简洁的小包 文件很少 与 Rails 相比 并且结构干净 事实上 您可以在不同项目之间插入和拔出应用程序 这是一个非常漂亮的功能 同时 Ruby的黑客能力是无与伦比的 它完全的面向对象特性使其更具表现力和乐趣
  • 使用 BeautifulSoup 抓取包含 JavaScript 的网页

    伙计们 我再次向您提出申请 我可以用标签抓取简单的网站 但最近我遇到了一个带有 JavaScript 的相当复杂的网站 因此 我想以表格 csv 的格式获得页面底部的所有估计值 如 用户 收入估算 每股收益估算 我希望自己能解决这个问题 但
  • 自动发现在 settins.py 中注册的 Django 应用程序小部件

    标题可能有点令人困惑 但我不知道还能怎么称呼它 我想创建一个包含大量应用程序的 Django 项目 您可以使用任意打开或关闭INSTALLED APPSsettings py 中的选项 显然您还需要编辑 urls py 并运行syncdb
  • 如何对编码任务进行非常快速(且肮脏)的估计? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 所以你刚刚被老板置于困境 您有 15 分钟的时间对添加一些新功能进行粗略估算 您的老板 幸运的是 认识到您无法在那段时间提供准确的估计 因此期望
  • 什么是摘要认证?

    除了以纯文本形式发送凭据之外 摘要式身份验证与基本身份验证有何不同 主要区别在于它不需要以明文形式通过网络发送用户名和密码 它也不受重放攻击的影响 因为它使用来自服务器的一次性号码 服务器向客户端提供一次性使用编号 随机数 该编号与用户名
  • 比较 JavaScript 中的时间

    我需要创建一个函数来根据时间过滤数据 我有一个相关行中包含出发时间的航班表 我需要的是 我将时间过滤器字段添加到我的表单中 以隐藏选定时间之前和之后的航班 换句话说 所选时间间隔之间的航班将可见 我从表和输入中获取时间信息没有问题 但我现在
  • JKS 与 PKCS12 在代码签名方面有何优点?

    购买代码签名证书时 从 PKCS12 开始与 JKS 证书相比有何优点 一些vendors http help godaddy com article 4780提供有关从 JKS 或 PKCS12 证书签名请求开始的说明 我们希望在使用购买
  • 如何在 Docker Swarm 中设置 Hadoop?

    我希望能够在 Docker 中启动 Hadoop 集群 将 Hadoop 节点分布到不同的物理节点 使用swarm https docs docker com engine swarm 我找到了sequenceiq 映像 它可以让我在doc
  • Python pyppeteer 拦截/捕获网络请求

    您好 我正在尝试使用 pyppeteer 拦截给定 url 的所有网络调用 my code import asyncio from pyppeteer import launch import pickle async def interc
  • 从服务器上的 SignalR hub 设置 cookie

    无论如何 我可以从 SignalR 集线器内部设置 cookie 特别是OnConnected方法 我想发送一个带有会话 ID 的 cookie 我尝试了这个 但它似乎不起作用 它也看起来很尴尬 因为我不确定为什么我需要提供字符串和 coo
  • 是否可以阻止 Jekyll 为每个帖子生成一个页面

    我正在将 Jekyll 用于博客 作品集网站 我有几篇文章是作品集条目 还有几篇是博客条目 我可以使用作品集条目帖子来构建作品集页面 www alexmarchant com portfolio 但 Jekyll 仍然为每个作品集条目生成一
  • iPhone 上的凹凸贴图

    在iPhone上使用OpenGL ES 是否可以进行凹凸贴图 使用法线扰动贴图 从我的谷歌搜索来看 支持它的 OpenGL ES 扩展似乎不允许凹凸贴图 根据this guy http www kevindoolan net blog po
  • 分布式事务中的MongoDB和MySQL事务

    我有一个用例 我们需要在分布式事务中同时使用 MySQL 和 MongoDB 即如果 MySQL 或 MongoDB 中的任何一个失败 MySQL 和 MongoDB 都必须失败 即 如果任何数据库中的任何一个发生 MongDB 和 MyS
  • 无法在 BigQuery 中使用 DML 语句在作业中设置目标表

    我正在编写 Python 代码以使用 bigquery Client query 执行 BigQuery sql 命令 我正进入 状态无法在具有 DML 语句的作业中设置目标表例外 下面是我正在使用的Python代码 if query fi
  • 如何在程序集中创建具有动态指定文件路径的文件?

    这个问题主要是如何在汇编中处理任意长字符串的路径名 而不需要db或任何类似的帮助者 我见过几个例子 例如this https www tutorialspoint com assembly programming assembly file
  • Git:在此树中查找重复的 blob(文件)

    这是一种后续行动这个问题 https stackoverflow com questions 223678 如果有多个具有相同内容的 blob 它们只会在 git 存储库中存储一次 因为它们的 SHA 1 是相同的 如何查找给定树的所有重复
  • 使用 while True 循环的托盘图标脚本无法关闭

    我想编写一个在后台运行的脚本 只要用户不退出程序 就会最小化到托盘图标 我没有也不需要花哨的 GUI 所以我只使用infi systray为了这 我需要脚本休眠一段时间 但我需要能够通过右键单击托盘图标来关闭它 当脚本运行时 我无法执行此操
  • Mac OS X 中的自动布局警告

    每次运行我的应用程序时 我都会收到一条我不完全理解的警告 Layout still needs update after calling WebHTMLView layout WebHTMLView or one of its superc
  • 如何处理 cron 触发器石英中夏令时的用户时区?

    我的服务 api 接受石英作业的开始日期和要执行的作业的月份日期 在内部 我将其转换为 cron 表达式并保存在quartz 中 例如 PST 中的用户今天 2017 年 11 月 3 日 提交了如下作业请求 start 2017 11 0