因DST而跳过工作

时间:2014-12-22 13:37:41

标签: java scheduled-tasks jobs dst timertask

我必须在不使用任何第三方API的情况下使用JDK1.4使用Java Timer安排一些作业。

如果Daylight Saving Time (DST)更改是从早上2点到凌晨3点,那么在DST过渡时间(即凌晨2点到凌晨3点)之间预定的作业应该是什么?

  1. 由于时间上没有出现在凌晨2点到凌晨3点之间的时间,因此应该忽略这些工作
  2. 应该在凌晨3点立即行动。
  3. 还有其他预期行为吗?
  4. 我认为许多企业应用程序都无法跳过这些工作。如何进行?

2 个答案:

答案 0 :(得分:3)

不要存储/运行/等。任何使用DST的东西。它很难维护。

UTC

将所有日期存储在UTC的数据库中。以UTC格式执行所有时间计算。为所有业务流程维护单一标准的不变更时间度量。只有在向用户显示结果(在屏幕上显示,在报告上打印等)时,才会将时间本地化为用户期望的任何内容。

基本上认为所有后端逻辑都是UTC,并且在接口级别,在本地化时间和"系统"之间会有一种转换层。时间。

答案 1 :(得分:0)

answer by David是正确的。

ScheduledExecutorService

另外,我建议使用ScheduledExecutorService而不是Timer。

请务必阅读包含所有JavaDoc的内容。搜索StackOverflow以查找讨论和示例代码。具体来说,您必须陷阱所有异常,否则服务将停止。