2

该变量dateSubtract为 16,但我想找到这 2 天之间的总天数,应该是 165。没有 JODA TIME怎么办?

String date = "06/17/2014";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy");
LocalDate d1 = LocalDate.parse("01/01/2014", formatter);
LocalDate d2 = LocalDate.parse(date, formatter);
int dateSubtract = Period.between(d1, d2).getDays();
4

3 回答 3

9

Period是日、月、年的组合。因此,在您的情况下,期限为 5 个月零 16 天。在 javadoc 中进行了解释,但如果您随便阅读,不一定很清楚。

天单位不会自动与月和年单位标准化。这意味着“45 天”的周期与“1 个月和 15 天”的周期不同,getDays()将分别返回 45 和 15。

要获取两个日期之间的总天数,您可以使用:

//including d1, excluding d2:
ChronoUnit.DAYS.between(d1, d2);
//or, to exclude d1 AND d2, one of these:
ChronoUnit.DAYS.between(d1.plusDays(1), d2);
ChronoUnit.DAYS.between(d1, d2) - 1;
于 2014-06-18T15:21:18.457 回答
0

没有 JODA 时间:

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date dateStart = null;
Date dateEnd = null;

try {
    dateStart = format.parse("01/01/2014");
    dateEnd = format.parse("06/17/2014");

    long diffTime = dateEnd.getTime() - dateStart.getTime();

    long diffDays = diffTime / (24 * 60 * 60 * 1000);

} catch (Exception e) {
    e.printStackTrace();
}
于 2014-06-18T15:27:36.040 回答
0

Period 以年、月和日为单位对时间量或时间量进行建模,例如2 years, 3 months and 4 days.

要计算两个日期之间的天数,请使用ChronoUnit.DAYS.between

long days = ChronoUnit.DAYS.between(LocalDate.of(2020,4,1), LocalDate.now());
于 2020-06-18T20:12:29.400 回答