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

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

目次

LocalDateTime 現在日時を取得(LocalDateTime)→表示形式を指定(String)
LocalDate 現在日を表示(LocalDate)
LocalTime 現在時刻を表示(LocalTime)
Timestamp 現在日時を表示(Timestamp)
ZonedDateTime タイムゾーンで現在日時を取得(ZonedDateTime)
Date 現在日時を取得(Date)→表示形式を指定(String)
文字列(String)をDateに変換 / DateをLocalDateTimeに変換
Calendar 現在日時を取得(Calendar)→表示形式を指定(String)

現在日時を取得(LocalDateTime)→表示形式を指定(String)

LocalDateTimeから表示形式を指定してStringを出力します。
LocalDateTimeのnowメソッドは、現在日時を取得します。

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 dtformat = 
			DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
		
		String fdate1 = dtformat.format(date1); //表示形式+Stringに変換
		
		System.out.println(fdate1); // 2021/10/06 23:47:22.175
	}
}

DateTimeFormatterクラスのofPatternメソッドは、表示形式を指定できます。SSSはミリ秒です。
表示形式の不要な項目は削除できます。

 

年月日時分秒の日本語で表示する場合

	DateTimeFormatter dtformat = 
		DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");

 

区切りなし(yyyyMMddHHmmss)で表示する場合

	DateTimeFormatter dtformat = 
			DateTimeFormatter.ofPattern("yyyyMMddHHmmss")

 

LocalDateTime型からString型に変換

toStringメソッドでもStringに変換できます。

	String date1 = LocalDateTime.now().toString();

	System.out.println(date1); // 2021-10-06T23:47:22.175

LocalDateTimeクラス

イミュータブル

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

スレッドセーフ

  • 複数のスレッドが同時に実行しても問題が発生しません。

 

現在日を表示(LocalDate)

LocalDate.now()は現在日を取得します。

import java.time.LocalDate;

public class Test1 {
	public static void main(String[] args) {
		LocalDate date1 = LocalDate.now();
		System.out.println(date1); // 2021-10-06
	}
}

 

現在時刻を取得(LocalTime)

LocalTime.now()は現在時間を取得します。

import java.time.LocalTime;

public class Test1 {
	public static void main(String[] args) {
		LocalTime date2 = LocalTime.now();
		System.out.println(date2); // 20:32:07.121
	}
}

 

現在日時を表示(Timestamp)

import java.sql.Timestamp;

public class Test1 {
	public static void main(String[] args) {
		// 現在日時を表示
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        System.out.println(timestamp); //2021-10-06 21:24:20.901
	}
}

戻り値はTimestamp型です。

 

タイムゾーンで現在日時を取得(ZonedDateTime)

ZonedDateTimeクラスは、タイムゾーンを指定できます。

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と呼ばれています。
イミュータブルかつスレッドセーフです。

https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZonedDateTime.html

ZoneIdクラス

https://docs.oracle.com/javase/jp/8/docs/api/java/time/ZoneId.html

 

現在日時を取得(Date)→表示形式を指定(String)

Dateから表示形式を指定してStringを出力します。

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);//表示形式+Stringに変換
		System.out.println(fdate1); // 2016/08/05 00:28:47.646
	}
}

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

 

年月日時分秒の日本語で表示

	SimpleDateFormat sformat = 
		new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");

 

文字列(String)をDateに変換

SimpleDateFormatで表示形式を指定しparseメソッドでDate型として出力します。

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

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

		String date1 = "2021/10/06 23:47:22.175";
		
		try {
			Date date = 
				new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS").parse(date1);
			System.out.println(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}

 

DateをLocalDateTimeに変換

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

class Test1 {
    public static void main( String[] args ) {
    	Date date = new Date();
        Instant instant = date.toInstant();
        LocalDateTime localdatetime 
        	= LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        
        System.out.println(localdatetime); //2022-01-11T22:57:32.646
    }
}

11行目のInstantクラスとtoInstantメソッドはJava1.8に追加されました。
時系列の時点を表します。

 

Dateクラス

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

https://docs.oracle.com/javase/jp/8/docs/api/java/util/Date.html

SimpleDateFormatクラス

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

https://docs.oracle.com/javase/jp/8/docs/api/java/text/SimpleDateFormat.html

 

現在日時を取得(Calendar)→表示形式を指定(String)

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

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

public class Test1 {
	public static void main(String[] args) {
		// 現在日時を取得
		Calendar calendar = Calendar.getInstance();

		// Date型に変換
		Date date = calendar.getTime();
		System.out.println(date); // Sun Jan 01 22:30:10 JST 2017

		// 表示形式を指定
		SimpleDateFormat sformat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
		String fdate = sformat.format(date);
		System.out.println(fdate); // 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秒からの経過時間)をベースにしています。

https://docs.oracle.com/javase/jp/8/docs/api/java/util/Calendar.html

関連の記事

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

 

△上に戻る