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

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

目次

LocalDateTimeクラス(JavaSE8から)

  • 現在日時を取得します。
  • JavaSE8で導入されました。Date and Time APIと呼ばれています。
  • Date and Time APIは、イミュータブルかつスレッドセーフです。
  • ISO8601、協定世界時(UTC)を使用して日時を表示します。
  • 以下は、Java8 API仕様のLocalDateTimeクラスのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/time/LocalDateTime.html

イミュータブル

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

DateTimeFormatterクラス

LocalDateTimeクラスを使用したサンプル

サンプルのコードです。
日時の表示形式を指定して出力します。
17-20行目は、現在日時を取得し、yyyy/MM/dd HH:mm:ss 曜日の形式で出力しています。
25-27行目は、現在日時を取得し、yyyy年MM月dd日 HH時mm分ss秒E曜日の形式で出力しています。
18行目で、年月日のみ出力したい場合は、年月日のみ("yyyy/MM/dd")と指定すればそれのみ取得できます。
26行目も同じです。
31行目は現在日付のみ取得しています。
35行目は現在時刻のみ取得しています。

package test1;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Test1 {
	public static void main(String[] args) {
		
		// LocalDateTimeクラスで現在日時を取得
		LocalDateTime d = LocalDateTime.now();
		System.out.println(d); // 出力結果:2018-02-11T13:02:49.380563400
		
		
		// DateTimeFormatterクラスで表示形式を指定 
		// "yyyy/MM/dd HH:mm:ss 曜日"
		DateTimeFormatter df1 = 
				DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss E");
		String s = df1.format(d); //format(d)のdは、LocalDateTime dのd
		System.out.println(s); // 出力結果:2018/02/11 13:02:49 日
		
		
		// DateTimeFormatterクラスで表示形式を指定
		// "yyyy年MM月dd日 HH時mm分ss秒 曜日"
		DateTimeFormatter df2 = 
				DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒E曜日");
		String s2 = df2.format(d); //format(d)のdは、LocalDateTime dのd
		System.out.println(s2); // 出力結果:2018年02月11日 13時02分49秒日曜日
		
		// 現在の日付のみを取得
		LocalDate d1 = LocalDate.now();
		System.out.println(d1); //2018-02-11
		
		// 現在の時刻のみを取得
		LocalTime t1 = LocalTime.now();
		System.out.println(t1); //18:55:25.544306600
 	}
}



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

ZoneIdクラス

ZonedDateTimeクラスを使用したサンプル

サンプルのコードです。
タイムゾーンの現在日時を取得し、日時の表示形式を指定して出力します。
12行目は、タイムゾーンIDにAmerica/Los_Angelesを指定しています。
日本を指定する場合は、13行目のようにAsia/Tokyoを指定します。

package test1;
 
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class Test1 {
	public static void main(String[] args) {
		
		// ZonedDateTimeクラスで現在日時を取得
		ZonedDateTime d 
				= ZonedDateTime.now(ZoneId.of("America/Los_Angeles"));
//				= ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
		System.out.println(d); 
		// 出力結果:2018-02-10T20:11:40.213604300-08:00[America/Los_Angeles]
		
		
		// DateTimeFormatterクラスで表示形式を指定 
		// "yyyy/MM/dd HH:mm:ss 曜日"
		DateTimeFormatter df1 = 
				DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss E");
		String s = df1.format(d); //format(d)のdは、LocalDateTime dのd
		System.out.println(s); // 出力結果:2018/02/10 20:11:40 土
		
		
		// DateTimeFormatterクラスで表示形式を指定
		// "yyyy年MM月dd日 HH時mm分ss秒 曜日"
		DateTimeFormatter df2 = 
				DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒E曜日");
		String s2 = df2.format(d); //format(d)のdは、LocalDateTime dのd
		System.out.println(s2); // 出力結果:2018年02月10日 20時11分40秒土曜日
 	}
}



Dateクラス(従来のやり方)

SimpleDateFormatクラス

Dateクラスを使用したサンプル

サンプルのコードです。
現在日時を取得し、日時の表示形式を指定して出力します。

package test1;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Test1 {
	public static void main(String[] args) {
		
		// Dateクラスで現在日時を取得
		Date d = new Date();
		System.out.println(d); // 出力結果:Fri Aug 05 00:28:47 GMT+09:00 2016
	 

		// SimpleDateFormatクラスで表示形式を指定
		// その1"yyyy/MM/dd HH:mm:ss"
		SimpleDateFormat d1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		String q1 = d1.format(d); // format(d)のdは、Date d = new Date();のd
		System.out.println(q1); // 出力結果: 2016/08/05 00:28:47
	 

		// その2"yyyy年MM月dd日 HH時mm分ss秒"
		SimpleDateFormat d2 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
		String q2 = d2.format(d); // format(d)のdは、Date d = new Date();のd
		System.out.println(q2); // 出力結果: 2016年08月05日 00時28分47秒
 	}
}

関連の記事

Java 日時の加算と減算のサンプル



△上に戻る