gpt4 book ai didi

java - 如何使这个 2038 年问题 junit 测试按预期工作

转载 作者:行者123 更新时间:2023-12-01 16:44:05 27 4
gpt4 key购买 nike

我正在编写的一些代码将在 2038 年 1 月 19 日之后停止工作,因为 Year_2038_problem当 java Date 溢出时,我想我可以创建一个在 2036 年开始失败的 junit 测试,以便给我 2 年的时间来修复它。

为了首先创建一个失败的测试,我添加了 25 年,并对测试没有失败感到惊讶。

@Test
public void warn2038Overflow() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 25);

// today is 2019 plus 25 years becomes 2044 which should overflow
assertEquals("No calendar overflow", true,
c.getTimeInMillis() > 0l);
}

有任何线索说明为什么这不会失败吗?

我正在使用 Android-Studio-3.4.1 和 java-1.8.0_152(64 位)以及“junit:junit:4.12”和“androidx.test:runner:1.1.0”

最佳答案

Year-2038-problem当您将纪元秒数存储在有符号的 32 位整数中时会发生这种情况(该整数将在 2038 年溢出)。

您使用的代码以带符号的 64 位整数存储毫秒数。那仍然可以正常工作for a while .

关于java - 如何使这个 2038 年问题 junit 测试按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234401/

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