无法从java中减去日期

时间:2016-04-12 14:06:12

标签: java date time epoch java.util.date

我想在java中从日期中减去天数。但我不想使用外部库。我已经提到了stackoverflow中的一些问题,但他们建议使用外部库。所以我应用了以下逻辑

noOfDays = 24;
Date compareDate = new Date(currentDate - noOfDays * 24 * 60 * 60 * 1000);
System.out.println("compare date " + compareDate);

它工作正常至24天。但是24天后它给出了意想不到的结果。这有什么解决方案吗?

3 个答案:

答案 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);