我想在java中从日期中减去天数。但我不想使用外部库。我已经提到了stackoverflow中的一些问题,但他们建议使用外部库。所以我应用了以下逻辑
noOfDays = 24;
Date compareDate = new Date(currentDate - noOfDays * 24 * 60 * 60 * 1000);
System.out.println("compare date " + compareDate);
它工作正常至24天。但是24天后它给出了意想不到的结果。这有什么解决方案吗?
答案 0 :(得分:4)
使用java.util.Calendar。 这样的事情:
Calendar c = new Calendar()
c.setTime(currentDate);
c.add(Calendar.DAY_OF_MONTH, noOfDays)
compareDate = c.getTime()
答案 1 :(得分:0)
你的计算是关于整数,它不适合比最大整数值更高的值。
将您的变量声明为long
:
long noOfDays = 24;
Date compareDate = new Date(currentDate - noOfDays * 24 * 60 * 60 * 1000);
System.out.println("compare date " + compareDate);
然而,正如评论所说,这不是减少日子的最佳方法,所以在其他答案中看看更好的解决方案。
答案 2 :(得分:0)
您可以使用LocalDate(自Java 8以来它是JDK的一部分):
LocalDate today = LocalDate.now();
LocalDate compareDate = today.minusDays(24);