ときにメソッドPeriod.betweenの取得方法の使用では問題になっている新機能のJava8範囲は、日付に注意を払う必要があります。
@Test
public void test1(){
LocalDate from = LocalDate.of(2018,10,1);
System.out.println(Period.between(from,LocalDate.now()).getDays());
}
まず、コード戻り上記日数はどのくらいだと思いますか?15日には、あなたはまだ推測しますか?
15日は、その後、私たちはあなたの心の他のフレームの再印刷理由を理解していない場合、あなたは理解することがあります。
@Test
public void test1(){
LocalDate from = LocalDate.of(2017,9,1);
Period period = Period.between(from,LocalDate.now());
System.out.println("2017-09-01到当前日期" + LocalDate.now());
System.out.println("距离当前多少年:" + period.getYears());
System.out.println("距离当前多少月:" + period.getMonths());
System.out.println("距离当前多少日:" + period.getDays());
}
次のようにこのプログラムの実装では、印刷ログは、次のとおりです。
2017-09-01到当前日期2019-10-16
距离当前多少年:2
距离当前多少月:1
距离当前多少日:15
それが今であるかを理解するために、次のログ情報をお読みください。時間間隔の期間であれば2年1ヶ月15日。次に、()メソッドはgetDaysにより15日間第店です。代わりに、2年と1ヶ月の15日間日間の合計数。
2つの日付の間の直線距離を計算したいのであればどのようにそれを行うには?以下の方法を用いることができます。
あなたがしたい場合は、カレンダー・ロジックの日数を、以下の使用DAYS.between()
方法をjava.time.temporal.ChronoUnit
:
LOCALDATE dateBefore; LOCALDATE dateAfter; 長いdaysBetween = DAYS.between(dateBefore、dateAfter)。
あなたがしたい場合は、日付の24時間、(持続時間)は、使用することができますDuration
クラス:
LOCALDATE今日= LocalDate.now() LOCALDATE昨日= today.minusDays(1); //期間oneDay = Duration.between(今日、昨日)。//例外がスローされます Duration.between(today.atStartOfDay()、yesterday.atStartOfDay())。今日()//別のオプションを
または:
@Test
public void test2() {
LocalDate from = LocalDate.of(2017, 9, 1);
long day = LocalDate.now().toEpochDay() - from.toEpochDay();
System.out.println("距离当前多少日:" + day);
}
結果の実装:
距离当前多少日:775