无法从 java 中的日期减去天数

Unable subtract days from date in java

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

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

直到 24 days.But 24 天后它都工作正常,它给出了意想不到的结果。有什么解决办法吗?

使用java.util.Calendar。 类似的东西:

Calendar c = new Calendar()
c.setTime(currentDate);
c.add(Calendar.DAY_OF_MONTH, noOfDays)
compareDate = c.getTime()

您的计算是关于整数的,它不会适合大于最大整数值的值。

将您的变量声明为 long :

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

但是,正如评论所说,这不是减去天数的最佳方法,因此请查看其他答案中更好的解决方案。

您可以使用 LocalDate(这是 JDK 的一部分,因为 Java 8):

LocalDate today = LocalDate.now();
LocalDate compareDate = today.minusDays(24);