gpt4 book ai didi

java - DateFormat 将新日期 (0) 打印为纪元 + 1 小时

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

以下测试失败:

DateFormat df = new SimpleDateFormat("HH:mm:ss z");
assertEquals("00:00:00 GMT", df.format(new Date(0)));

预期为“00:00:00 GMT”但实际为“01:00:00 GMT”

有人能指出我哪里不对吗?

我研究这个的时间比用 Joda-Time 替换所有内容的时间要长。那里有一个教训。

最佳答案

问题是 Java 在 1970 年的 Europe/London 时区缩写名称周围存在错误。

1970 年冬天,英国仍使用 UTC+1 - 但 Java 认为它仍称为“GMT”。所以您看到的是 1970 年 1 月 1 日午夜 UTC 的本地时间...只是我们习惯了 GMT=UTC,这就是它令人困惑的原因。

(附带说明,即使是现在,仍然值得转换为 Joda Time。避免像瘟疫这样的内置库:)

Joda Time 将时区缩写打印为“BST”。这似乎同样奇怪,因为它显然不是夏令时......但这里的“S”可能是标准时间的标准,因为那是在“英国标准时间实验”期间.参见 Wikipedia了解详情。

(请注意,UTC 本身在 Unix 时代甚至不存在 - 它是在 1972 年引入的。为了这个答案,我假设一个 proleptic UTC :)

关于java - DateFormat 将新日期 (0) 打印为纪元 + 1 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7406706/

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