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

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では最もシンプルで推奨される方法。
  • 文字列から作成する際は、指定された形式に従っていないと例外が発生する点に注意する。
  1. 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」にな

  2. JavaScriptでDateオブジェクトを作成する方法をわかりやすく解説

    JavaScriptで日付や時刻を扱うには、Dateオブジェクトを使用します。new Date()コンストラクタを呼び出すだけで、現在の日時に基づいたDateオブジェクトを簡単に生成できます。以下に、ボタンをクリックすると現在の日時を持つDateオブジェクトを作成し、画面に表示するサンプルコードを示します。コード例<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport"