トッカンソフトウェア

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("2019/06/05 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));

		// カレンダー
		// 日曜日:1
		// 月曜日:2
		// 火曜日:3
		// 水曜日:4
		// 木曜日:5
		// 金曜日:6
		// 土曜日:7
		System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
	}
}


				
			
実行結果
				
Wed Jun 05 21:45:57 JST 2019
2019/06/05 21:45:57
Wed Jun 05 11:22:33 JST 2019
Wed Jun 05 18:45:57 JST 2019
7
4
			
日時の加算(減算)では時間単位に加算しましたが、以下の単位で計算できます。
指定 単位
Calendar.YEAR
Calendar.MONTH
Calendar.DATE
Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
Calendar.MILLISECOND ミリ秒

日付操作(Java8~)

				
package test;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Test {

	public static void main(String[] args) {

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

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

		System.out.println(d);

		// 文字列→日付オブジェクト
		LocalDate dt2 = LocalDate.parse("2019/06/05", df);
		System.out.println(dt2);

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

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

		// カレンダー(曜日が月曜始まりに変わってる)
		// 月曜日:1
		// 火曜日:2
		// 水曜日:3
		// 木曜日:4
		// 金曜日:5
		// 土曜日:6
		// 日曜日:7
		DayOfWeek dow = dt1.getDayOfWeek();
		System.out.println(dow + ":" + dow.getValue());
	}
}

			

日時操作(Java8~)

				
package test;

import java.time.DayOfWeek;
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("2019/06/05 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);

		// カレンダー(曜日が月曜始まりに変わってる)
		// 月曜日:1
		// 火曜日:2
		// 水曜日:3
		// 木曜日:4
		// 金曜日:5
		// 土曜日:6
		// 日曜日:7
		DayOfWeek dow = dt1.getDayOfWeek();
		System.out.println(dow + ":" + dow.getValue());
	}
}


			
実行結果
				
2019-06-05T21:59:47.787
2019/06/05 21:59:47
2019-06-05T11:22:33
2019-06-05T18:59:47.787
-7
WEDNESDAY:3

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

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

ページのトップへ戻る