【Java】Dateの時分秒を切り捨てる方法

java

Dateの時分秒をDateUtils.truncateを使って、切り捨てる方法を紹介します。

[スポンサーリンク]

Dateの時分秒を切り捨てるプログラム

public static void main(String[] args) throws Exception {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
	Date now = new Date(sdf.parse("2014/01/01 10:10:10").getTime());
	
	// 時分秒 切り捨て前の時刻
	System.out.println("時分秒 切り捨て前の時刻 : " + sdf.format(now));
	
	// 時分秒 を切り捨て
	Date dateTruncateHour = DateUtils.truncate(now, Calendar.DAY_OF_MONTH);
	System.out.println("時分秒 を切り捨て : " + sdf.format(dateTruncateHour));
}

実行結果

>実行結果
時分秒 切り捨て前の時刻 : 2014/01/01 10:10:10
時分秒 を切り捨て : 2014/01/01 00:00:00

解説

DateUtils.truncateの使い方によっては、「分秒」のみを切り捨てることも可能です。
「日時分秒」を切り捨てることも可能です。

切り捨てる箇所(分秒や日時分秒)を変える時は、DateUtils.truncateの第二引数(Calendar.DAY_OF_MONTH)を変える必要があります。

分秒を切り捨てるサンプルプログラムは以下で紹介します。

Dateの分秒を切り捨てるプログラム

public static void main(String[] args) throws Exception {
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
	Date now = new Date(sdf.parse("2014/01/01 10:10:10").getTime());
	
	// 分秒 切り捨て前の時刻
	System.out.println("分秒 切り捨て前の時刻 : " + sdf.format(now));
	
	// 分秒 を切り捨て
	Date dateTruncateMin = DateUtils.truncate(now, Calendar.HOUR_OF_DAY);
	System.out.println("分秒 を切り捨て : " + sdf.format(dateTruncateMin));
}

実行結果

>実行結果
分秒 切り捨て前の時刻 : 2014/01/01 10:10:10
分秒 を切り捨て : 2014/01/01 10:00:00

さいごに

Dateの時分秒を切り捨てる処理は、あまり使わないように思えますが、私は意外と使っています。

例えば、DBの値と現在時刻を比較する必要があった時、DBの値が「yyyy/MM/dd」(時分秒を持っていない)の形式の日付型だった場合、現在時刻を取得した後は時分秒を取り除いてから比較する必要があります。
日付の比較は、時分秒単位で正確に行いましょう。
それでは!