【问题标题】:Java date DST adjusts my date / timeJava date DST 调整我的日期/时间
【发布时间】:2016-07-29 12:25:20
【问题描述】:

我有一个函数接受 2 组日期(start dateend date),这些日期将用于我的匹配引擎

我必须知道start_date1end_date1 是否在start_date2end_date2

快进:当我在本地运行它时,我已经有了正确的计算和实现...... 但是当我在云中运行它时..这是结果

结果:

(DATETIME IN SQL)

input > **start_date1** : Apr 1, 2016  6:00am

input > **end_date1** : Apr 1, 2016 7:00pm

--

(TIMESTAMP IN SQL)

input > **start_date2** : Apr 1, 2016 6:00am

input > **end_date2** : Apr 1, 2016 6:00pm


output : true
--------------

如您所见,输出一定是假的。我认为它正在由 DST 调整.. 请告诉我是否有办法忽略 DST 或将其关闭或忽略它的最简单方法..

顺便说一句,我正在使用 Java 7.. 谢谢!

【问题讨论】:

  • 您能否创建一个发送end_date1 = 6:59pm 的测试来查看您的理论是否正确?
  • 我只是每小时换一次,所以.. 不。在我的记录器中,它实际上只调整了 1 小时。甚至创建了一个布尔矩阵来调查每小时的匹配情况..
  • 另外,我已经处理过,如果日期/时间超过 1 秒,它会调整 1 小时。
  • 什么数据库?什么是列类型?你如何在 Java 中检索它?
  • 我用的是MySQL,列类型写在我的帖子里。我正在检索它作为 date.util

标签: java date timezone dst


【解决方案1】:

如果您的本地时区和云端时区不同,可能会发生这种情况。确保两个时区相同。

您可以使用以下命令更改您的时区:

TimeZone.setDefault(TimeZone.getTimeZone("yourTimeZone"));

你也可以选择没有夏令时的时区,比如“UTC”:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

【讨论】:

  • 请注意,更改 JVM 的当前默认时区会立即影响在该 JVM 中运行的所有其他应用程序的所有其他线程中的所有其他代码。我建议您仅作为解决非常严重问题的最后手段才这样做。
猜你喜欢
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2016-05-12
  • 2016-04-05
  • 2021-08-18
  • 2013-02-08
相关资源
最近更新 更多