7

2 つの日付を比較したいという問題に遭遇しました。ただし、年、月、日のみを比較したかっただけです。そして、これは私が思いつくことができるものです:

 private Date trim(Date date) {

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.MILLISECOND, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.HOUR, 0);
        return calendar.getTime();
    }

この機能を使用して、日、月、年以外のすべての単位をトリムします。

さて、問題はそれについてどう思いますか?そうする他の方法を知っていますか?

ありがとう

4

5 に答える 5

8

本当に使用する必要がありますjava.util.Dateか? joda timeに切り替えることができれば、次のような非常に優れた機能が見つかります。

dateTime.dayOfMonth().roundFloorCopy()

これはまさにあなたが必要とすることを行います。

于 2013-07-06T00:05:57.657 に答える
6

あなたのコードは機能し、読みやすいです。それを変更する問題や理由は見当たりません。

于 2013-07-05T23:41:45.363 に答える
2

yearと のみを比較したい 2 つの日付を比較するとしmonthますday

あなたが行ったことは問題ありません。つまり、、、hourおよびをminute削除します。両方の日付でこれを行う必要があります。secondmillisecond

トリミングが完了したら、クラスcompareToでメソッドを使用する必要があります。Date

次のコードを使用できます-

if(date1.compareTo(date2) < 0) {
  // date1 is earlier
} else if(date1.compareTo(date2) > 0) {
  // date 2 is earlier
} else {
  // both dates are equal
}      
于 2013-07-05T23:40:44.690 に答える
0

日付の形式は固定されているため、これを試すことができます。

    String first = date1.toString().substring(4,10) + " " + date.toString().substring(24, 28);
    String second = date2.toString().substring(4,10) + " " + date.toString().substring(24, 28);

どちらが出力されますか

1969年12月31日

1969 年 1 月 6 日

そして、結果を比較します。

return (first.equals(second));

それがあなたの考えよりも優れているかどうかはわかりませんが、同じ結果が得られます。

于 2013-07-06T00:00:47.767 に答える