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

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

目次

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

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

package test1;
import java.time.LocalDateTime;

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

		LocalDateTime d = LocalDateTime.now();
		System.out.println(d); //2018-02-11T13:02:49.380563400
 	}
}

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

指定の表示形式で出力する(yyyy/MM/dd HH:mm:ss形式)

LocalDateTimeクラスでローカルの現在日時を取得し、DateTimeFormatterクラスでyyyy/MM/dd HH:mm:ss形式に出力するサンプルです。

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

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

		LocalDateTime d = LocalDateTime.now();
		System.out.println(d); //2018-02-11T13:02:49.380563400
		
		DateTimeFormatter df1 = 
				DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss E");
		String s = df1.format(d); //format(d)のdは、8行目のd
		System.out.println(s); // 2018/02/11 13:02:49 日
 	}
}

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

指定の表示形式で出力する(yyyy年MM月dd日 HH時mm分ss秒形式)

LocalDateTimeクラスでローカルの現在日時を取得し、DateTimeFormatterクラスでyyyy年MM月dd日 HH時mm分ss秒形式に出力するサンプルです。

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

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

		LocalDateTime d = LocalDateTime.now();
		System.out.println(d); //2018-02-11T13:02:49.380563400
		
		DateTimeFormatter df1 = 
				DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒E曜日");
		String s = df1.format(d); //format(d)のdは、8行目のd
		System.out.println(s); // 2018年02月11日 13時02分49秒日曜日
 	}
}

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

LocalDateTimeクラス

イミュータブル

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

スレッドセーフ

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

DateTimeFormatterクラス

ローカルの日付を取得(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メソッドで現在時刻を取得しています。

タイムゾーンの現在日時を取得(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 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 df1 = 
			DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss E");
		String s = df1.format(d); //format(d)のdは、11行目のd
		System.out.println(s); // 2018/02/10 20:11:40 土
		
		// 表示形式を指定
		DateTimeFormatter df2 = 
			DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒E曜日");
		String s2 = df2.format(d); //format(d)のdは、11行目のd
		System.out.println(s2); // 2018年02月10日 20時11分40秒土曜日
 	}
}

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

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

ZoneIdクラス

 

ローカルの現在日時を取得(Dateクラス) - 従来のやり方

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

package test1;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class Test1 {
	public static void main(String[] args) {
		
		// 現在日時を取得
		Date d = new Date();
		System.out.println(d); //Fri Aug 05 00:28:47 GMT+09:00 2016
	 
		// 表示形式を指定
		SimpleDateFormat d1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
		String q1 = d1.format(d); // format(d)のdは、10行目のd
		System.out.println(q1); // 2016/08/05 00:28:47
	 
		// 表示形式を指定
		SimpleDateFormat d2 = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
		String q2 = d2.format(d); // format(d)のdは、10行目のd
		System.out.println(q2); // 2016年08月05日 00時28分47秒
 	}
}

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

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(cal.YEAR));  //2018 (年)
        System.out.println(cal.get(cal.MONTH)+1); // 2 (月)
        System.out.println(cal.get(cal.DATE)); // 10 (日)
        
        System.out.println(cal.get(cal.HOUR_OF_DAY));  //9 (時)
        System.out.println(cal.get(cal.MINUTE)); // 10 (分)
        System.out.println(cal.get(cal.SECOND)); // 15 (秒)
 	}
}

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

Calendarクラス

関連の記事

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

△上に戻る