31

重複の可能性:
2つのJava日付インスタンス間の差異の計算

これは重複したスレッドである可能性があることを私は知っています。しかし、私は2つの日付の差を計算する方法を見つけようとしています。jqueryから、日付文字列はの形式になります'yyyy-mm-dd'。私はこれを文字列として読み、このようにjavaDateに変換しました

Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date1));
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.getParameter(date2));

これら2つの日付の日数の差を計算したいと思います。

注:サードパーティのAPIは確認する必要があるため、使用できません。

4

3 に答える 3

32

編集2018-05-28Java8のTimeAPI を使用するように例を変更しました。

LocalDate d1 = LocalDate.parse("2018-05-26", DateTimeFormatter.ISO_LOCAL_DATE);
LocalDate d2 = LocalDate.parse("2018-05-28", DateTimeFormatter.ISO_LOCAL_DATE);
Duration diff = Duration.between(d1.atStartOfDay(), d2.atStartOfDay());
long diffDays = diff.toDays();
于 2012-10-23T19:44:44.807 に答える
10

の使用に制限があると仮定するとDate、次のことができます。

Date diff = new Date(d2.getTime() - d1.getTime());

ここでは、「エポック」からのミリ秒単位の差を計算し、エポックからのオフセットで新しいDateオブジェクトを作成しています。他の人が言ったように:重複した質問の答えはおそらくより良い選択肢です(あなたがに縛られていない場合Date)。

于 2012-10-23T19:42:13.500 に答える
6
Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
            getParameter(date1));
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
            getParameter(date2));

long diff = d2.getTime() - d1.getTime();

System.out.println("Difference between  " + d1 + " and "+ d2+" is "
        + (diff / (1000 * 60 * 60 * 24)) + " days.");
于 2012-10-23T19:44:25.153 に答える