【问题标题】:Spring Scheduler task run with multiple timezones dateTimeSpring Scheduler 任务运行多个时区 dateTime
【发布时间】:2020-12-03 07:28:14
【问题描述】:

我有多个 timeZone 客户,应用程序与 UTC 一起工作。所以,通常我实施

@Scheduled(cron = "0 10 0 * * ?") // This scheduler will run at 00:10 AM daily And Send Notification.

但问题是它在 UTC 时间上午 12:10 运行;但是,可能会因客户时区而异

例如。 UTC 00:10 AM 在 IST 是 5:40 AM,因此印度的客户将在 05:40 AM 而不是 IST 的 00:10 AM 收到通知。

要求:我需要在每个客户时区的上午 00:10 运行一个任务(调度程序),而不是在应用程序时区(UTC)中。

【问题讨论】:

  • 您可以让它每小时运行一次并检查现在上午 12:10 是哪个时区,或者可以使用更动态的方法(例如石英时间表)计算需要运行的时间并提前安排。跨度>
  • “每小时运行一次” - 是的 - 或每 30 分钟运行一次,以考虑具有 30 分钟偏移量的国家(例如印度),甚至 15 分钟(尼泊尔)...
  • @locus2k 感谢重播。但是这个逻辑有冲突或问题,即(默认调度程序与应用程序 timeZone 一起运行,例如 UTC。让我们每小时或 30 分钟运行一次调度程序,我们检查每个 timeZone 时间现在是上午 12:10 但有可能在特定时间它总是围绕时间,而不是确切的 12:10 AM)所以我们错过了特定 timeZone 的 12:10 AM 时间//希望您理解
  • 每 30 分钟运行一次调度程序从上午 12:10 开始
  • 另外,值得考虑观察到某种形式的Daylight Saving Time 的时区。为避免错过一份报告或一天发送两份报告,您可能更愿意提前预先计算每天的日程安排。这也适用于国家可以不时实施的临时调整。

标签: java spring spring-boot scheduled-tasks scheduler


【解决方案1】:

user.timezone Java 系统属性可能有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-13
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2013-04-07
    • 1970-01-01
    • 2021-04-25
    相关资源
    最近更新 更多