HOWTO · Java

Java で現在の日時を取得する方法

この記事では、Java で現在の日時を取得するためのいくつかのメソッドを解説例を交えて紹介しています。

Java で現在の日時を取得できる様々なメソッドを一挙に紹介します。詳しい例を見て理解を深めていきましょう。

Java で現在の日付と時刻を取得するには LocalDateTime.now() を使用する

現在の日時は、LocaleDateTime クラスを用いて now() メソッドを用いて取得することができます。これは、YYYY-MM-DD-hh-mm-ss.zzz 形式で、2020-09-22T14:39:33.889798 のような形式で返します。

より読みやすくするために、DateTimeFormatter.ofPattern(pattern) を使用することにします。

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

public class Main {
  public static void main(String[] args) {
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
    System.out.println("yyyy/MM/dd HH:mm:ss-> " + dtf.format(LocalDateTime.now()));

    DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yy/MM/dd HH:mm:ss");
    System.out.println("yy/MM/dd HH:mm:ss-> " + dtf2.format(LocalDateTime.now()));

    DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern("yyyy/MMMM/dd HH:mm:ss");
    System.out.println("yyyy/MMMM/dd HH:mm:ss-> " + dtf3.format(LocalDateTime.now()));

    DateTimeFormatter dtf4 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm");
    System.out.println("yyyy/MM/dd HH:mm-> " + dtf4.format(LocalDateTime.now()));

    DateTimeFormatter dtf5 = DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm");
    System.out.println("yyyy/MM/dd hh:mm:ss-> " + dtf5.format(LocalDateTime.now()));
  }
}

出力:

yyyy/MM/dd HH:mm:ss-> 2020/09/22 15:07:01
yy/MM/dd HH:mm:ss-> 20/09/22 15:07:01
yyyy/MMMM/dd HH:mm:ss-> 2020/September/22 15:07:01
yyyy/MM/dd HH:mm-> 2020/09/22 15:07
yyyy/MM/dd hh:mm:ss-> 2020/09/22 03:07

Java でタイムゾーン付きの現在の日付と時刻を取得するには、ZonedDateTime.now() を使用する

タイムゾーンは日付と時刻の重要な部分です。タイムゾーンを指定して日付と時刻を取得するには、ZonedDateTime.now() を用います。

ZonedDateTime.now() の中で ZoneId 引数を渡すことで、すべてのタイムゾーンの時刻を取得することができます。

以下の例を見てみましょう。

import java.time.ZonedDateTime;

public class Main {
  public static void main(String[] args) {
    System.out.println(ZonedDateTime.now());

    System.out.println("Get current timezone " + ZonedDateTime.now().getZone());

    System.out.println(
        "Get time of different timezone: " + ZonedDateTime.now(ZoneId.of("America/New_York")));
  }
}

出力:

2020-09-22T15:53:32.635585+05:30[Asia/Kolkata]
Get current timezone Asia/Kolkata
Get time of different timezone: 2020-09-22T06:23:32.643391-04:00[America/New_York]

Java で現在の日付と時刻を取得するための Calendar.getInstance() の例

現在の日付と時刻を取得するもう一つの方法は、Calendar.getInstance() を利用して Calendar オブジェクトを返すことです。

この例では、時刻が表示されています。

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

public class Main {
  public static void main(String[] args) {
    String timeStamp =
        new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime());

    System.out.println(timeStamp);
  }
}

出力:

2020/09/22 15:59:45