【发布时间】:2021-01-03 19:06:46
【问题描述】:
我正在尝试使用以下方法计算 100 天后的时间:
import java.util.Date;
public class Main
{
public static void main(String[] args) {
System.out.println("Hello World");
System.out.println(new Date(System.currentTimeMillis() + 8640000 * 1000));
}
}
它给了我Jan 04 08:57:25 UTC 2021 这是不正确的。我该如何补救?
【问题讨论】:
-
整数溢出。 8640000×1000 > 2³¹。将
8640000更改为8640000L,以便 Java 知道您正在使用 64 位long值进行数学运算,这不会溢出。 -
也可以考虑
LocalDateTime.now().plus(Duration.ofDays(100))。 -
@trashgod 为什么
plus(Duration.ofDays(100))plusDays(100)可用? -
虽然在 UTC 中 100 天等于您尝试计算的毫秒数,但在许多其他时区通常情况并非如此,因为一天可能是 23 或 25 小时。
-
@Andreas:好问题;我开始走那条路,但我想强调
Duration的概念。
标签: java