Javaでjava.sql.Dateオブジェクトを作成する方法をわかりやすく解説
Javaでデータベースを扱う際、JDBCでは日付の値を java.sql.Date オブジェクトとして扱います。この記事では、java.sql.Date オブジェクトを作成する2つの代表的な方法(コンストラクタの利用と valueOf() メソッドの利用)について、サンプルコード付きで解説します。
1. コンストラクタを使って作成する
java.sql.Date のコンストラクタは、1970年1月1日00:00:00 GMT(エポック)からの経過ミリ秒を表す long 型の値を受け取り、それに対応する日付を持つオブジェクトを生成します。
Date(long date)
文字列から日付を解析してエポックミリ秒を取得し、そこから java.sql.Date オブジェクトを作成する例を見てみましょう。
サンプルコード
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Demo {
public static void main(String args[]) throws ParseException {
String str = "26-09-1989";
SimpleDateFormat obj = new SimpleDateFormat("dd-MM-yyyy");
long epoch = obj.parse(str).getTime();
System.out.println("Date value: " + epoch);
// java.sql.Dateオブジェクトの作成
java.sql.Date date = new java.sql.Date(epoch);
System.out.println(date);
}
}
実行結果
Date value: 622751400000 1989-09-26
SimpleDateFormat を使って文字列を解析し、getTime() メソッドでエポックからの経過ミリ秒を取得しています。その値をコンストラクタに渡すことで、目的の日付を持つ java.sql.Date オブジェクトが生成されます。
2. valueOf() メソッドを使って作成する
java.sql.Date クラスには、valueOf() メソッドが用意されており、こちらの方がより簡単にオブジェクトを作成できます。このメソッドには次の2つのバリアントがあります。
valueOf(LocalDate date)…java.time.LocalDateオブジェクトから生成valueOf(String s)… 「yyyy-[m]m-[d]d」形式の日付文字列から生成
引数として指定された日付に対応する java.sql.Date オブジェクトを返します。それぞれの使い方を確認していきましょう。
例1:LocalDateオブジェクトから作成する
import java.sql.Date;
import java.time.LocalDate;
public class Demo {
public static void main(String args[]) {
LocalDate localDate = LocalDate.of(2014, 9, 11);
Date date = Date.valueOf(localDate);
System.out.println(date);
}
}
実行結果
2014-09-11
LocalDate.of() で年・月・日を指定して LocalDate オブジェクトを作成し、それを Date.valueOf() に渡しています。Java 8以降の日時API(Date-Time API)とJDBCの日付クラスを連携させる際に便利な方法です。
例2:日付文字列から作成する
import java.sql.Date;
public class Demo {
public static void main(String args[]) {
String str = "2017-12-03";
Date date = Date.valueOf(str);
System.out.println("Date Value: " + date);
}
}
実行結果
Date Value: 2017-12-03
文字列から作成する場合は、「yyyy-[m]m-[d]d」形式(例:2020-01-05 や 2020-1-5)に従っている必要があります。形式が不正な場合は IllegalArgumentException がスローされるため、ユーザー入力などを扱う際には注意してください。
まとめ
- エポックミリ秒(
long値)が手元にある場合は、コンストラクタDate(long date)を使用する。 LocalDateオブジェクトや「yyyy-mm-dd」形式の文字列から作成できるvalueOf()メソッドが、現代のJavaでは最もシンプルで推奨される方法。- 文字列から作成する際は、指定された形式に従っていないと例外が発生する点に注意する。
-
JavaScriptで日付文字列からDateオブジェクトを作成する方法
日付文字列からDateオブジェクトを作成する基本JavaScriptでは、Dateコンストラクタに引数を渡すだけで、簡単に日付オブジェクトを作成できます。var date = new Date(2018, 1, 1);ここで重要なポイントは、月の指定が「0」から始まるインデックスになっていることです。つまり、0が1月(Jan)、1が2月(Feb)、2が3月(Mar)というように対応します。この仕様を忘れると、意図した日付より1ヶ月ずれた結果になってしまうため注意が必要です。サンプルコード以下のコードは、2018年1月1日のDateオブジェクトを作成し、画面に出力する例です。月の部分が「0」にな
-
JavaScriptでDateオブジェクトを作成する方法をわかりやすく解説
JavaScriptで日付や時刻を扱うには、Dateオブジェクトを使用します。new Date()コンストラクタを呼び出すだけで、現在の日時に基づいたDateオブジェクトを簡単に生成できます。以下に、ボタンをクリックすると現在の日時を持つDateオブジェクトを作成し、画面に表示するサンプルコードを示します。コード例<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport"