gpt4 book ai didi

Java计算从今天开始的过去日期将进入 future

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:59 25 4
gpt4 key购买 nike

我在 Java 计算当前日期减去特定天数时遇到问题。

我有:

Date pastDate = new Date(new Date().getTime() - (1000 * 60 * 60 * 24 * 25));

这将返回2016 年 2 月 16 日星期二 09:04:18 EST,而实际上它应该返回 2015 年 12 月 28 日星期二 16:06:11 EST(进入 25 天后过去)。

非常奇怪的是,对于 25 天以内的任何数字都可以正常工作:

Date pastDate = new Date(new Date().getTime() - (1000 * 60 * 60 * 24 * 24));

与过去 24 天一样,返回可预测的 Tue Dec 29 16:06:11 EST 2015

如有任何帮助,我们将不胜感激。

最佳答案

24 天内,产品保持在刚好低于最大可能 intInteger.MAX_VALUE , 即 2,147,483,647。 24 天的产品是 2,073,600,000。 25 天的产品是 2,160,000,000。结果是溢出和负数,导致 future 的日期。

对于此类值,对第一个值使用 long 文字(或将其转换为 long)以避免超过 Integer 带来的溢出。 MAX_VALUE。请注意附加到 1000LL:

(1000L * 60 * 60 * 24 * 25)

这很好用,因为 desired constructor for Date takes a long .

使用 Calendar 可以更干净地处理日期算法,您可以在其中显式添加负数天数。

此外,对于 Java 8+,您可以使用 Instant and its minus method减去时间。

Instant.now().minus(24, ChronoUnit.DAYS);

关于Java计算从今天开始的过去日期将进入 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34956006/

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