3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Java】Dateの時刻を00:00:00にする方法

Posted at

概要

  • チェックする対象の日付が今日より前か後か当日かを調べたい
  • ただしチェックする対象の日付は時刻が00:00:00なので日付だけ比較したい
  • new Date()で生成した今日の日付は時刻まで入っている
    • 比較すると日付が一緒でも時刻が違うと当日判定にならない

実現方法

使うメソッド

  • java.util.Dateのメソッドを使って前後比較をします
  • 言わずと知れたorg.apache.commons.lang3DateUtilsを使います
UseMethod
java.util.Date.equals(Object obj)
java.util.Date.before(Date when)
java.util.Date.after(Date when)

org.apache.commons.lang3.time.DateUtils.truncate(Date date, int field)

サンプル

DateUtilService.java
public void printDate(Date targetDate) {

    // 今日の00:00:00を取得
    Date today = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH);

    if (targetDate.equals(today)) {
        System.out.println("今日です。");
    } else if (targetDate.after(today)) {
        System.out.println("今日より後の日付です。");
    } else if (targetDate.before(today)) {
        System.out.println("今日より前の日付です。");
    }
}

解説

  1. DateUtils.truncateの第1引数にはゼロ埋めしたい日付を入れる
  2. 第2引数にCalendar.DAY_OF_MONTHを渡す
  3. todayの時刻が00:00:00になるから、targetDateとフォーマットが揃う
  4. あとはequals、after、beforeで前後関係を調べる

ちなみに

DateUtils.isSameDayを使う方法

当日かどうかだけならDateUtils.isSameDayを使えば、truncateで00:00:00にしなくても日付だけ比較してbooleanを返してくれます。
※今回はbeforeとafterを使いたかったのでゼロ埋めしました

ゼロにする位置を変える場合

DateUtils.truncateの第2引数に渡す変数次第でゼロにする位置を変えられます。

int field ゼロになる位置
Calendar.DAY_OF_MONTH 00:00:00
Calendar.HOUR_OF_DAY XX:00:00
Calendar.MONTH 1日の00:00:00
Calendar.YEAR 1/1の00:00:00

参考

【Java】Dateの時分秒を切り捨てる方法
Class DateUtils|org.apache.commons.lang3.time

3
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?