相关疑难解决方法(0)

java日期什么时候会崩溃?

AFAIK java以长度变量存储日期,以毫秒为单位.因此有一天将没有价值(因为长期有一个最大值),这将对应于该瞬间的时间.你知道什么时候会发生吗?

java datetime

18
推荐指数
2
解决办法
1万
查看次数

无论系统是 32 位还是 64 位,int 是 32 位还是 64 位长?

在 java 中,无论体系结构是 32 位还是 64 位,是否保证 int 始终为 32 位大小且 long 为 64 位大小?

java int 32bit-64bit long-integer

6
推荐指数
2
解决办法
3218
查看次数

如何使用System.currentTimeMillis()管理剩余的时间

我使用例如此代码来检查用户是否可以执行某些操作.因此,用户每5秒钟只能执行一次操作.

if((System.currentTimeMillis() - lastTime) > 5000)
{
    // Message: Ok, you can do action now.
}else{
    // Message: Have to wait 5 seconds to do action.
    return;
}

lastTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

但是众所周知,System.currentTimeMillis()回报很长,而且长期可以继续增长,直到它变成否定为止.

我的代码应该在需要超过1个月正常运行时间的服务器上运行.因此,我担心在某些时候System.currentTimeMillis()会返回一个否定值,我的代码将始终告诉用户他需要等待5秒或相反.

我真的很难专注于这段代码并修复它,所以我问你们,如果你有一个关于如何解决这个问题并使我的代码100%安全的提示.

java time milliseconds

2
推荐指数
1
解决办法
1393
查看次数

是在 2038 年之后保存使用 System.currentTimeMillis() 吗?

2038 年问题(也称为 Y2038 或 Unix Y2K)涉及将许多数字系统中的时间表示为自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数,并将其存储为有符号的 32 位整数。此类实现无法对 2038 年 1 月 19 日 03:14:07 UTC 之后的时间进行编码。就像 Y2K 问题一样,2038 年问题是由所选数据类型的容量不足引起的。

(来源维基百科)

我试图搜索这如何影响 Android 及其应用程序。但我没有找到任何明确的答案。所以我想在这里问:

如果我们的程序将使用 System.currentTimeMillis() 方法,我们是否可以预期未来(2038 年及以后)会出现任何问题?

它们是我们应该避免的任何危险方法吗?

java android year2038

1
推荐指数
1
解决办法
236
查看次数

如何使今年的2038年问题junit测试按预期工作

我正在编写一些代码,由于Java 溢出,因此Year_2038_problem会在2038年1月19日之后停止工作,Date所以我可以创建一个junit测试,该测试在2036年开始失败,给我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);
}
Run Code Online (Sandbox Code Playgroud)

有什么线索为什么这不会失败?

我正在将Android-Studio-3.4.1与java-1.8.0_152(64位)结合使用,并具有'junit:junit:4.12'和'androidx.test:runner:1.1.0'

java junit year2038

0
推荐指数
1
解决办法
33
查看次数