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

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

目次

Java8から ローカルの現在日時を取得する(LocalDateTimeクラス)
  タイムゾーンの現在日時を取得(ZonedDateTimeクラス)
  ローカルの日付を取得する(LocalDateクラス)
  ローカルの時刻を取得する(LocalTimeクラス)
Java7以前可 ローカルの現在日時を取得(Dateクラス) 
  ローカルの現在日時を取得(Calendarクラス)

ローカルの現在日時を取得する(LocalDateTimeクラス)

LocalDateTimeクラスでローカルの現在日時を取得し、DateTimeFormatterクラスで表示形式を指定して出力するサンプルです。
LocalDateTimeクラスは、Java8で導入されました。

package test1;
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); //2018-02-11T13:02:49.957 
		
		DateTimeFormatter df1 = 
				DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS E");
		String s1 = df1.format(date1);
		System.out.println(s1); // 2018/02/11 13:02:49.957 日
		
		DateTimeFormatter df2 = 
		  DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒 E曜日");
		String s2 = df2.format(date1);
		System.out.println(s2); // 2018年02月11日 13時02分49秒957ミリ秒 日曜日
 	}
}

8行目は、LocalDateTimeクラスのnowメソッドで現在日時を取得しています。

11,12行目は、DateTimeFormatterクラスのofPatternメソッドでyyyy/MM/dd HH:mm:ss SSSの形式を指定しています。SSSはミリ秒です。
13行目は、DateTimeFormatterクラスのformatメソッドで設定しています。引数のdate1は、8行目の現在日時の値です。
表示形式の不要な項目は削除できます。Eは曜日ですが削除すると曜日なしで表示されます。

17行目は、年月日時分秒で表示します。SSSはミリ秒です。

LocalDateTimeクラス

イミュータブル

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

スレッドセーフ

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

DateTimeFormatterクラス

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

タイムゾーンの現在日時を取得し指定の表示形式で出力するサンプルです。
ZonedDateTimeクラスは、Java8で導入されました。

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 date1 
			= ZonedDateTime.now(ZoneId.of("America/Los_Angeles"));
//			= ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
		System.out.println(date1); 
		// 2018-02-10T07:32:30.808-08:00[America/Los_Angeles]
		
		// 表示形式を指定 
		DateTimeFormatter df1 = 
			DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss SSS E");
		String s1 = df1.format(date1);
		System.out.println(s1); // 2018/02/10 07:32:30 808 土
		
		// 表示形式を指定
		DateTimeFormatter df2 = 
			DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒 SSS E曜日");
		String s2 = df2.format(date1);
		System.out.println(s2); // 2018年02月10日 07時32分30秒 808 土曜日
 	}
}

12行目は、タイムゾーンIDにAmerica/Los_Angelesを指定しています。
日本を指定する場合は、13行目のようにAsia/Tokyoを指定します。
SSSはミリ秒です。

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

ZoneIdクラス

ローカルの現在日時を取得(Dateクラス) 

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

package test1;
 
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 d1 
		= new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
		String s1 = d1.format(date1);
		System.out.println(s1); // 2016/08/05 00:28:47.646
	 
		// 表示形式を指定
		SimpleDateFormat d2 
		= new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒SSSミリ秒");
		String s2 = d2.format(date1);
		System.out.println(s2); // 2016年08月05日 00時28分47秒646ミリ秒
 	}
}

10行目は、Dateクラスで現在日時を取得しています。
ただし表示される値は11行目のように表示され一般的な表示形式ではありません。
→SimpleDateFormatクラスでyyyy/mm/ddなどの表示形式に変更できます。

ミリ秒を表示する場合は、SSSを指定します。

Dateクラス

SimpleDateFormatクラス

ローカルの現在日時を取得(Calendarクラス)

Calendarクラスでローカルの現在日時を取得するサンプルです。

package test1;
import java.util.Calendar;

public class Test1 {
	public static void main(String[] args) {
		
        Calendar cal = Calendar.getInstance();
        
        System.out.println(cal.get(Calendar.YEAR));  //2018 (年)
        System.out.println(cal.get(Calendar.MONTH)+1); // 2 (月)
        System.out.println(cal.get(Calendar.DATE)); // 10 (日)
        
        System.out.println(cal.get(Calendar.HOUR_OF_DAY));  //9 (時)
        System.out.println(cal.get(Calendar.MINUTE)); // 10 (分)
        System.out.println(cal.get(Calendar.SECOND)); // 15 (秒)
        System.out.println(cal.get(Calendar.MILLISECOND)); // 538 (ミリ秒)
 	}
}

7行目は、CalendarクラスのgetInstanceメソッドで現在日時を取得しています。
9~11行目は、取得した年月日です。月は1を足す必要があります。
13~15行目は、取得した時分秒です。

Calendarクラス

ローカルの日付を取得する(LocalDateクラス)

LocalDateクラスでローカルの日付を取得するサンプルです。
LocalDateクラスは、Java8で導入されました。

package test1;
import java.time.LocalDate;

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

		LocalDate d1 = LocalDate.now();
		System.out.println(d1); //2018-02-11
 	}
}

7行目は、LocalDateクラスのnowメソッドで現在日付を取得しています。

ローカルの時刻を取得する(LocalTimeクラス)

LocalTimeクラスでローカルの時刻を取得するサンプルです。
LocalTimeクラスは、Java8で導入されました。

package test1;
import java.time.LocalTime;

public class Test1 {
	public static void main(String[] args) {
		
		LocalTime d1 = LocalTime.now();
		System.out.println(d1); //09:29:10.686
 	}
}

7行目は、LocalTimeクラスのnowメソッドで現在時刻を取得しています。

関連の記事

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

△上に戻る