Java 現在日時の取得と表示形式のサンプル

Javaの現在日時の取得と表示形式のサンプルです。

目次

Java8から 現在日時を取得し表示形式を指定する(LocalDateTimeクラス)
  タイムゾーンで現在日時を取得する(ZonedDateTimeクラス)
Java7以前可 現在日時を取得し表示形式を指定する(Dateクラス)
  現在日時を取得し表示形式を指定する(Calendarクラス)

現在日時を取得し表示形式を指定する(LocalDateTimeクラス)

LocalDateTimeクラスで現在日時を取得し表示形式を指定するサンプルです。

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

public class Test1 {
	public static void main(String[] args) {

		// 現在日時を表示
		LocalDateTime date1 = LocalDateTime.now();
		System.out.println(date1); // 2021-10-06T23:47:22.175049200

		// 区切り文字を指定
		DateTimeFormatter dtformat1 = 
			DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS E");
		String fdate1 = dtformat1.format(date1);
		System.out.println(fdate1); // 2021/10/06 23:47:22.175 水
	}
}

LocalDateTimeクラスのnowメソッドは、現在日時を取得します。
DateTimeFormatterクラスのofPatternメソッドは、表示形式を指定できます。SSSはミリ秒です。
表示形式の不要な項目は削除できます。Eは曜日ですが削除すると曜日なしで表示されます。

年月日等の日本語での指定も可能

	// 年月日時分秒ミリ秒曜日で表示
	DateTimeFormatter dtformat2 = 
		DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒 E曜日");
	String fdate2 = dtformat2.format(date1);
	System.out.println(fdate2); // 2018年02月11日 13時02分49秒957ミリ秒 日曜日

	// 区切りなしで表示
	DateTimeFormatter dtformat3 = 
		DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
	String fdate3 = dtformat3.format(date1);
	System.out.println(fdate3); // 2018021113024

String型にする

日時をString型にする場合は、toStringメソッドを使用します。

		// String型にする
		String date1 = LocalDateTime.now().toString();
		System.out.println(date1); // 2021-10-06T23:47:22.175

LocalDateTimeクラス

イミュータブル

  • インスタンスを作成した後、そのインスタンスの状態が変わらないことです。
  • 日付を加算をしても元のインスタンスは変わらず新しいインスタンスを返します。
  • Calendarクラスのインスタンスは状態が変わります。→ミュータブルです。

スレッドセーフ

  • 複数のスレッドが同時に実行しても大丈夫です。

DateTimeFormatterクラス

 

タイムゾーンで現在日時を取得する(ZonedDateTimeクラス)

タイムゾーンで現在日時を取得するサンプルです。
ZonedDateTimeクラスは、Java8で導入されました。

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Test1 {
	public static void main(String[] args) {
		
		// 現在日時を取得
		ZonedDateTime date1 
			= ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
		System.out.println(date1); 
		// 2018-02-10T23:12:40.226002900+09:00[Asia/Tokyo]
 	}
}

9行目は、タイムゾーンIDにAsia/Tokyoを指定しています。

ZonedDateTimeクラス(タイムゾーン)

nowメソッドで現在日時を取得できます。
Java8で導入されました。Date and Time APIと呼ばれています。
イミュータブルかつスレッドセーフです。

以下は、Java8 API仕様のZonedDateTimeクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZonedDateTime.html

ZoneIdクラス

以下は、Java8 API仕様のZoneIdクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZoneId.html

 

現在日時を取得し表示形式を指定する(Dateクラス)

Dateクラスで現在日時を取得し表示形式を指定するサンプルです。

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
	public static void main(String[] args) {

		// 現在日時を取得
		Date date1 = new Date();
		System.out.println(date1); // Fri Aug 05 00:28:47 JST 2016

		// 表示形式を指定
		SimpleDateFormat sdformat1 =
		 new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
		String fdate1 = sdformat1.format(date1);
		System.out.println(fdate1); // 2016/08/05 00:28:47.646
	}
}

8行目は、Dateクラスで現在日時を取得しています。
13行目は、SimpleDateFormatクラスでyyyy/MM/ddの表示形式を指定しています。ミリ秒を表示する場合は、SSSを指定します。

年月日等の日本語での指定も可能

		// 年月日時分秒ミリ秒を指定
		SimpleDateFormat sdformat2 = 
		new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");
		String fdate2 = sdformat2.format(date1);
		System.out.println(fdate2); // 2016年08月05日 00時28分47秒646ミリ秒

フォーマットは日本語指定も可能です。

Dateクラス

Unix時間(1970年1月1日0時0分0秒からの経過時間)をベースにしています。

以下は、Java8 API仕様のDateクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Date.html

SimpleDateFormatクラス

日時を指定した表示形式にします。

以下は、Java8 API仕様のSimpleDateFormatクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html

 

現在日時を取得し表示形式を指定する(Calendarクラス)

Calendarクラスで現在日時を取得し表示形式を指定するサンプルです。

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

public class Test1 {
	public static void main(String[] args) {
		// 現在日時を取得
        Calendar cal1 = Calendar.getInstance();
        
		// Date型に変換
		Date date1 = cal1.getTime();
        System.out.println(date1); //Sun Jan 01 22:30:10 JST 2017
        
		 // 表示形式を指定
 		SimpleDateFormat sdformat 
 		= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
 		String fdate1 = sdformat.format(date1);
 		System.out.println(fdate1); // 2017/01/01 22:30:10 471
 	}
}

8行目は、CalendarクラスのgetInstanceメソッドで現在日時を取得しています。
11行目は、Date型に変換しています。
16行目のSimpleDateFormatクラスで表示形式(yyyy/MM/dd HH:mm:ss)を指定しています。

Calendarクラス

Unix時間(1970年1月1日0時0分0秒からの経過時間)をベースにしています。

以下は、Java8 API仕様のCalendarクラスのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Calendar.html

関連の記事

Java 日時を計算するサンプル(加算と減算)

△上に戻る