Javaで現在の日付を取得する4つの方法|Date・LocalDate・Calendar・java.sql.Dateの使い方
Javaで現在の日付(システム日付)を取得する方法は複数あります。古くから使われている java.util.Date や Calendar クラスから、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.DateやCalendarを使用します。 - データベース処理の場合: JDBC向けに
java.sql.Dateを使用します。
用途に応じて適切なAPIを選択し、日付処理を安全かつ効率的に行いましょう。
-
Androidで端末の現在の言語を取得する方法をわかりやすく解説
Androidアプリを多言語対応(国際化)させる際には、端末に設定されている現在の言語を把握しておくことが重要です。本記事では、Localeクラスを使用してAndroid端末の現在の言語と国名を取得する方法を、サンプルコード付きで段階的に解説します。 全体の流れ 今回作成するのは、ボタンをタップすると端末の言語名と国名がTextViewに表示されるシンプルなアプリです。実装の手順は以下の3ステップです。 Android Studioで新規プロジェクトを作成する レイアウトファイル(activity_main.xml)にUIを定義する MainActivity.javaにロジックを実装する
-
【Python】Tkinterウィンドウに現在の日付を表示する方法
Pythonで日付や時刻を扱う際には、標準ライブラリとして提供されている「datetime」パッケージを使用します。datetimeパッケージを活用すれば、日付の表示だけでなく、datetimeオブジェクトの操作や、アプリケーションへの追加機能の実装なども柔軟に行えます。Tkinterウィンドウに現在の日付を表示するには、まずdatetimeモジュールを環境にインポートします。インポートが完了したら、datetimeオブジェクトのインスタンスを作成し、ラベルウィジェット(Label)を使って画面に表示します。サンプルコード以下は、Tkinterウィンドウに現在の日付を表示する具体的な実装例です