Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで現在の日付を取得する4つの方法|Date・LocalDate・Calendar・java.sql.Dateの使い方

Javaで現在の日付(システム日付)を取得する方法は複数あります。古くから使われている java.util.DateCalendar クラスから、Java 8以降で推奨される LocalDate など、状況に応じて使い分けが可能です。ここでは代表的な4つの方法を、サンプルコードと実行結果付きで解説します。

1. java.util.Dateクラスのコンストラクタを使う

java.util.Date クラスの引数なしコンストラクタは、現在の日付と時刻を表すDateオブジェクトを返します。これに SimpleDateFormat を組み合わせれば、任意の形式で現在日付を出力できます。

サンプルコード

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

public class Demo {
    public static void main(String args[]) throws ParseException {
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yy");
        String str = formatter.format(date);
        System.out.print("Current date: " + str);
    }
}

実行結果

Current date: 05/11/20

なお、new Date() の代わりに System.currentTimeMillis() を引数として渡すことでも同じ結果が得られます。

2. LocalDateクラスのnow()メソッドを使う(Java 8以降で推奨)

Java 8で導入された日時API(Date-Time API)の LocalDate クラスには、現在の日付を取得するための now() メソッドが用意されています。タイムゾーンを意識せずにシンプルに書けるため、現在はこの方法が最も推奨されています。

サンプルコード

import java.time.LocalDate;

public class CreateDate {
    public static void main(String args[]) {
        LocalDate date = LocalDate.now();
        System.out.println("Current Date: " + date);
    }
}

実行結果

Current Date: 2020-11-05

出力はISO-8601形式(yyyy-MM-dd)となるため、書式変換が必要なければSimpleDateFormatなども不要です。また、時刻まで必要な場合は LocalDateTime.now() を使用します。

3. CalendarクラスのgetInstance()メソッドを使う

java.util.Calendar クラスの引数なしの getInstance() メソッドは、現在の日付と時刻を持つCalendarオブジェクトを返します。getTime() でDateオブジェクトに変換すれば、SimpleDateFormatによる整形も可能です。

サンプルコード

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Calendar;

public class Test {
    public static void main(String[] args) throws ParseException {
        DateFormat formatter = new SimpleDateFormat("dd/MM/yy");
        Calendar obj = Calendar.getInstance();
        String str = formatter.format(obj.getTime());
        System.out.println("Current Date: " + str);
    }
}

実行結果

Current Date: 05/11/20

Calendarは年や月などの個別フィールドを操作したい場合に便利ですが、可変オブジェクトである点や月が0始まりである点など扱いに注意が必要です。

4. java.sql.Dateクラスを使う

java.sql.Date クラスには、long型の値(エポックからのミリ秒)を受け取るコンストラクタがあります。そこで、現在時刻のミリ秒値を返す System.currentTimeMillis() を引数に渡すことで、現在日付のDateオブジェクトを作成できます。

サンプルコード

public class CreateDate {
    public static void main(String[] args) {
        java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
        System.out.println("Current Date: " + date);
    }
}

実行結果

Current Date: 2020-11-05

java.sql.Dateは主にデータベースとの連携(JDBC)で使用されるクラスです。時刻情報は持ちません。

まとめ:どの方法を選ぶべきか?

  • 新規開発の場合: Java 8以降の LocalDate.now() / LocalDateTime.now() を使用するのがベストプラクティスです。不変(イミュータブル)でスレッドセーフな設計になっています。
  • レガシーコードとの互換性が必要な場合: java.util.DateCalendar を使用します。
  • データベース処理の場合: JDBC向けに java.sql.Date を使用します。

用途に応じて適切なAPIを選択し、日付処理を安全かつ効率的に行いましょう。

  1. Androidで端末の現在の言語を取得する方法をわかりやすく解説

    Androidアプリを多言語対応(国際化)させる際には、端末に設定されている現在の言語を把握しておくことが重要です。本記事では、Localeクラスを使用してAndroid端末の現在の言語と国名を取得する方法を、サンプルコード付きで段階的に解説します。 全体の流れ 今回作成するのは、ボタンをタップすると端末の言語名と国名がTextViewに表示されるシンプルなアプリです。実装の手順は以下の3ステップです。 Android Studioで新規プロジェクトを作成する レイアウトファイル(activity_main.xml)にUIを定義する MainActivity.javaにロジックを実装する

  2. 【Python】Tkinterウィンドウに現在の日付を表示する方法

    Pythonで日付や時刻を扱う際には、標準ライブラリとして提供されている「datetime」パッケージを使用します。datetimeパッケージを活用すれば、日付の表示だけでなく、datetimeオブジェクトの操作や、アプリケーションへの追加機能の実装なども柔軟に行えます。Tkinterウィンドウに現在の日付を表示するには、まずdatetimeモジュールを環境にインポートします。インポートが完了したら、datetimeオブジェクトのインスタンスを作成し、ラベルウィジェット(Label)を使って画面に表示します。サンプルコード以下は、Tkinterウィンドウに現在の日付を表示する具体的な実装例です