gpt4 book ai didi

Java 缺少 28 秒

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:47 24 4
gpt4 key购买 nike

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

当我将日期读入日历以重新格式化输出时,时间更改为日期前 28 秒; 6月30日23:59:32或7月1日00:00:28(视司机而定)有人知道解决此问题的方法吗?

http://themagicofscience.blogspot.com/2010/08/java-puzzler-1-july-1937.html

最佳答案

配置您的日历以使用不同的Locale

Calendar 将编码时间转换为本地时间。这 20 多秒在那个 Locale 中的不同显示格式中是不存在的,所以如果你坚持保留那个 Locale,并且你坚持显示设置了秒数的日期,那么,那么您需要在 1937 年与荷兰政府交涉;但是,如果您将显示格式更改为不同的 Locale,您会发现底层时间数据结构的实际值没有改变,它将解析为不同的时间要显示的不同秒值。

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

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

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

请等到您发现 1582 年丢失的日子。

关于Java 缺少 28 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6140624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com