Javaの2つの日付の違いを調べる必要があります。その差は開始日と終了日を含みます。私は以下のコードを使ってみましたが、開始日と終了日は含まれていません。Javaの2つの日付の差異(開始日と終了日を含む)
long diffDays = Days.daysBetween(new DateTime(startDate), new DateTime(endDate)).getDays();
これを実現するユーティリティメソッドはありますか?
Javaの2つの日付の違いを調べる必要があります。その差は開始日と終了日を含みます。私は以下のコードを使ってみましたが、開始日と終了日は含まれていません。Javaの2つの日付の差異(開始日と終了日を含む)
long diffDays = Days.daysBetween(new DateTime(startDate), new DateTime(endDate)).getDays();
これを実現するユーティリティメソッドはありますか?
ライブラリを使用していない場合、これは方法の1のようになります。
public static Map<TimeUnit,Long> computeDiff(Date date1, Date date2) {
long diffInMillies = date2.getTime() - date1.getTime();
List<TimeUnit> units = new ArrayList<TimeUnit>(EnumSet.allOf(TimeUnit.class));
Collections.reverse(units);
Map<TimeUnit,Long> result = new LinkedHashMap<TimeUnit,Long>();
long milliesRest = diffInMillies;
for (TimeUnit unit : units) {
long diff = unit.convert(milliesRest,TimeUnit.MILLISECONDS);
long diffInMilliesForUnit = unit.toMillis(diff);
milliesRest = milliesRest - diffInMilliesForUnit;
result.put(unit,diff);
}
return result;
}
さもないと、あなたがジョダ
Joda-Timeは良い提案ですが、それでも最適なものではありません。 「Joda-Timeは主に「完成」のプロジェクトとみなされます。大幅な拡張は計画されていません。 Java SE 8を使用している場合は、「java.time」(JSR-310)に移行してください。」[Joda-Timeホームページ](http://www.joda.org/joda-time/)から引用してください。 –
いずれにせよ、若い人たちに古くなった古いDateクラスを教えてください。あなたと私の両方が言及したように、今日私たちはずっと優れています。まだJava 8(またはそれ以降)を使用していない場合、私はまだ[The ThreeTen Backport **](http://www.threeten.org/threetenbp/)がJoda-Timeよりも優れていると思います。 –
を使用することができます[MCVE]を追加してください。 (期待される成果を有するデータ例を含む)。 – Fildor
'Days'と' DateTime'はどのライブラリから来ていますか?ジョーダタイム? –
問題に開始日と終了日の両方が含まれていない場合は、1(または必要に応じて2)を追加できませんか? –