无法从 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);
我想从 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);