トッカンソフトウェア

Java 日時

Javaで日時を操作をやってみます。Java8から新しい方式に変わったので、最初にJava7までの日時操作、次にJava8からの日時操作をやってみます。


日時操作(~Java7)

				
package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test {

	public static void main(String[] args) throws ParseException {

		// システム日付を取得
		Date dt1 = new Date();
		System.out.println(dt1);

		// 日付オブジェクト→文字列
		DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		String d = df.format(dt1);
		System.out.println(d);

		// 文字列→日付オブジェクト
		Date dt2 = df.parse("2017/11/12 11:22:33");
		System.out.println(dt2);

		// 日時の加算(減算)
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(dt1);
		calendar.add(Calendar.HOUR, -3);
		Date dt3 = calendar.getTime();
		System.out.println(dt3);

		// 日時の差(単位:ミリ秒)
		long diff = dt3.getTime() - dt2.getTime();
		System.out.println(diff / (60 * 60 * 1000));
	}
}


				
			
実行結果
				
Sun Nov 12 23:01:41 JST 2017
2017/11/12 23:01:41
Sun Nov 12 11:22:33 JST 2017
Sun Nov 12 20:01:41 JST 2017
8

			
日時の加算(減算)では時間単位に加算しましたが、以下の単位で計算できます。
指定 単位
Calendar.YEAR
Calendar.MONTH
Calendar.DATE
Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
Calendar.MILLISECOND ミリ秒

日時操作(Java8~)

				
package test;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Test {

	public static void main(String[] args)  {

		// システム日付を取得
		LocalDateTime dt1 = LocalDateTime.now();
		System.out.println(dt1);

		// 日付オブジェクト→文字列
		DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
		String d = dt1.format(df);

		System.out.println(d);

		// 文字列→日付オブジェクト
		LocalDateTime dt2 = LocalDateTime.parse("2017/11/12 11:22:33", df);
		System.out.println(dt2);

		// 日時の加算(減算)
		LocalDateTime dt3 = dt1.plus(-3, ChronoUnit.HOURS);
		System.out.println(dt3);

		// 日時の差(単位:指定)
		long diff = dt3.until(dt2, ChronoUnit.HOURS);
		System.out.println(diff);
	}
}


			
実行結果
				
2017-11-12T23:13:29.341
2017/11/12 23:13:29
2017-11-12T11:22:33
2017-11-12T20:13:29.341
-8

			
今回は、LocalDateTimeを使用しましたが、ZonedDateTime(タイムゾーン付き)、OffsetDateTime(時差情報付き)などもあります。

日時の加算(減算)では時間単位に加算しましたが、以下の単位で計算できます。
指定 単位
ChronoUnit.YEARS
ChronoUnit.MONTHS
ChronoUnit.DAYS
ChronoUnit.HOURS
ChronoUnit.MINUTES
ChronoUnit.SECONDS
ChronoUnit.MILLIS ミリ秒

ページのトップへ戻る