gpt4 book ai didi

java.util.Date: 7 天前

转载 作者:IT老高 更新时间:2023-10-28 20:24:03 26 4
gpt4 key购买 nike

我在 Jasper Reports 中创建了一份报告,它只识别 java.util.Date 的(不是日历或公历等)。

有没有办法在当前日期前 7 天创建一个日期?

理想情况下,它看起来像这样:

new Date(New Date() - 7)

更新:我怎么强调都不为过:JasperReports 无法识别 Java 日历对象。

最佳答案

从现在开始:

long DAY_IN_MS = 1000 * 60 * 60 * 24;
new Date(System.currentTimeMillis() - (7 * DAY_IN_MS))

从任意日期日期:

new Date(date.getTime() - (7 * DAY_IN_MS))

编辑:正如其他答案中指出的那样,如果这是一个因素,则不考虑夏令时。

只是为了澄清我所说的限制:

对于受夏令时影响的人,如果提前 7 天,您的意思是如果现在是 中午 12 点在 2010 年 3 月 14 日,您希望 7 天前 的计算结果是 2010 年 3 月 7 日中午 12 点,那么请小心。

此解决方案可准确找到 24 小时 * 7 天 = 168 小时前的日期/时间。

但是,当此解决方案发现例如 (14 Mar 2010 1:00pm) - 7 * DAY_IN_MS 时,有些人会感到惊讶可能(2010 年 3 月 7 日 12:00pm) 中返回结果,其中您所在时区的挂钟时间 在 2 个日期/时间(1pm12pm)之间不一样。这是因为夏令时从那天晚上开始或结束,而“挂钟时间”减少或增加了一个小时。

如果 DST 对您来说不是一个因素,或者如果您确实想要 (168 小时) 准确(不管挂钟时间的变化),那么这个解决方案可以正常工作。

否则,当您的 7 天前 并不真正意味着 168 小时(由于 DST 在该时间范围内开始或结束)时,您可能需要进行补偿。

关于java.util.Date: 7 天前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4902653/

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