7

java.sql.Dateaと aの 2 つのオブジェクトがありjava.sql.Timeます。
それらを単一にマージする最良の方法は何java.util.Dateですか?

データベースでは、これらの列は別々に保存されます。私はJDBCrs.getDate("Date")rs.getTime("Time");.

4

3 に答える 3

3

ミリ秒を持ち越さないことを除いて、 istovatis による答えは正しいです。現代の答えに貢献したいと思います。java.sql.Datejava.sql.Timeはかなり時代遅れになっていますが、それらに代わるものであるLocalDateLocalTimeクラスを使用すると、タスクがはるかに簡単になります。Java 8 以降およびJDBC 4.2 以降を使用していると仮定すると、結果セットからこれらの型を取得して結合します。

    LocalDate date = rs.getObject("Date", LocalDate.class);
    LocalTime time = rs.getObject("Time", LocalTime.class);
    LocalDateTime dateTime = date.atTime(time);

SQL の結果セットに直接アクセスしたり、変更できないレガシー API から取得java.sql.Dateしたりできない場合は、最新の型に変換してから、同じ方法でマージすることをお勧めします。java.sql.Time

    LocalDate date = sqlDate.toLocalDate();
    LocalTime time = sqlTime.toLocalTime();

    LocalDateTime dateTime = date.atTime(time);

を要求しましたjava.util.Date。そのクラスもかなり古いので、上記のコードの を使用することをお勧めします (または、使用目的に応じてまたはにLocalDateTime変換することもできます)。変更できない他のレガシー API が必要な場合は、次のように変換します。ZonedDateTimeInstantDate

    Instant inst = dateTime.atZone(ZoneId.systemDefault()).toInstant();
    java.util.Date utilDate = java.util.Date.from(inst);

レガシー API にTimestampオブジェクトが必要な場合は、さらに簡単です。

    Timestamp ts = Timestamp.valueOf(dateTime);

リンク: Oracle チュートリアル: Date Timeの使用方法を説明しますjava.time

于 2018-05-25T10:10:51.737 に答える
1

どちらにも時間と曜日があるため、次のようなことができます。

Date d = new Date(2013, 11, 23);
Time t = new Time(23, 45, 45);
d.setMinutes(t.getMinutes());
d.setHours(t.getHours());
d.setSeconds(t.getSeconds());
于 2013-10-15T14:10:18.667 に答える