Java 爪哇失踪28秒

Java 爪哇失踪28秒,java,calendar,Java,Calendar,我试图从数据库中提取一个表,并将其重新加载到另一种类型的数据库中。问题是,在我的本地设置中,1937年7月1日的日期在00:00:00时会导致获取时间戳的问题。在荷兰,他们在1937年改变了子午线,导致1937年7月1日的前28秒不存在 当我将日期读入日历以重新格式化输出时,时间变为日期前28秒;6月30日23:59:32或7月1日00:00:28(取决于驾驶员) 有人知道这个问题的解决方法吗 最简单的方法可能是对这些特定时间进行简单的检查,并相应地更改日期。配置您的日历以使用不同的区域设置 日

我试图从数据库中提取一个表,并将其重新加载到另一种类型的数据库中。问题是,在我的本地设置中,1937年7月1日的日期在00:00:00时会导致获取时间戳的问题。在荷兰,他们在1937年改变了子午线,导致1937年7月1日的前28秒不存在

当我将日期读入日历以重新格式化输出时,时间变为日期前28秒;6月30日23:59:32或7月1日00:00:28(取决于驾驶员) 有人知道这个问题的解决方法吗


最简单的方法可能是对这些特定时间进行简单的检查,并相应地更改日期。

配置您的
日历
以使用不同的
区域设置

日历
s将编码的时间转换为本地时间。这20秒以上的时间在该
区域设置中没有不同的显示格式,因此如果你坚持保持该
区域设置,并且坚持以秒为单位显示日期,那么你需要在1937年与荷兰政府协商;但是,如果将显示格式更改为不同的
区域设置
,则会发现基础时间数据结构的实际值没有更改,它将解析为具有不同秒值的区域设置中的不同时间

唯一需要注意的是,如果您在读取和存储之间操纵时间,那么您可能会无意中创建一个新的
time
Calendar
对象,它将根据
区域设置
格式化时间到基础数据表示的转换来设置或重置其基础数据结构

这就是为什么最好在UTC中处理批量日期和时间处理,而不使用夏令时。即使时间与当地时间不匹配(不同时区的人更难阅读),UTC的每一秒都存在,因此简单的+5秒更改可以通过对受影响时间的简单格式快速验证

这种处理的唯一警告是,以后必须始终将UTC时间转换回本地时间进行显示。根据听众的教育程度,一些荷兰人可能会震惊地发现,他们的政府不允许这样的秒数存在,并且可能会要求展示这些秒数,尽管裁决这些秒数不属于荷兰日历的一部分


只需等到1582年发现丢失的日期。

尝试提取GMT或UTC的日期,然后以这种方式重新加载。然后,您将使用新系统的详细信息作为区域设置,而不是原始系统。

在Java中,日期以独立于时区的方式存储在内部。(它存储为毫秒数,因为--我忘记了起始日期,是1970年1月1日格林威治标准时间吗?)当您输出日期时,它必须考虑时区。但任何内部操纵都不重要。你没有说你使用的是什么数据库引擎,所以我不知道它是如何存储日期的。现在我主要与Postgres合作,它将所有日期存储在GMT中,并在输入和输出时间转换为适当的时区


因此,如果您只是将时区设置为GMT,那么移动时区边界、夏令时等的任何更改都应该是无关的。

这里的输入和输出究竟是什么还不清楚。你能发布一些代码吗?你认为有效的输出是什么?此外,您是否必须对时间进行本地化,或者是否可以使用UTC?一般来说,如果您需要这种精度,现代通用时间系统将不够。他们通常使用所谓的“前公历”,向后应用当前规则。这将需要一个非常专门的系统来处理这些问题。有些国家(我似乎记得荷兰就是其中之一)的时间与格林尼治标准时间(UTC仅开始于1972年)的偏差被包括在几分之一秒之内。这可能是在20世纪初。你的软件真的为这个时区的变化做了调整吗?在世界计时的历史上,有这么多这样奇怪的变化,我认为为它们编码将是一场噩梦,(a)编码将是一场噩梦,并且(b)用户将是一场噩梦。这与UTC在过去四十年中增加的“闰秒”数有着可疑的关系;到目前为止已经增加了28个。。。仅供参考,使用32位有符号时间(以秒为单位)覆盖范围从1901-12-13到2038-01-19。如果您有其他选项,例如64位毫秒,请改用它。那应该可以处理。。。快速计算。。。两种情况下的跨度约为2.92亿年。我无意冒犯Sun和Oracle,但我猜Java可能在2.9亿年后不再被使用。我将开始担心在大约2.8亿年后向更大的日期字段过渡的策略。这应该给我们足够的时间来计划和实施它。但是,说真的,在今天这个时代,任何制造时间类型的人都应该至少能够追溯到140亿年前的大爆炸,至少可以追溯到这么多,甚至更多…@karmakaze:我是一个神创论者,所以我只需要追溯到6000年前。我必须允许无限的时间进入永恒。在UTC中操作似乎是我最好的解决方案。然而,其他时区是否也会带来同样的问题,可能是以稍微不同的方式?问题不在于时区,而在于区域设置与时区的结合。其他地区出现问题(很少),但它们往往是,嗯。。。细节上不同,但事实上类似,即政府行动决定需要一些改变来调整日历