web-dev-qa-db-ja.com

Java.sql.DateオブジェクトをGregorianCalendarに変換するにはどうすればよいですか?

年、月、日をとるコンストラクターを使用して GregorianCalendar を作成できると思っていましたが、これらのフィールドをインスタンスから確実に取得することはできません _Java.sql.Date_ クラス。 _Java.sql.Date_からこれらの値を取得するメソッドは非推奨であり、次のコードはそれらが使用できない理由を示しています。

_import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;

public class DateTester {

    public static void main(String[] args) {
        Date date = Date.valueOf("2011-12-25");
        System.out.println("Year: " + date.getYear());
        System.out.println("Month: " + date.getMonth());
        System.out.println("Day: " + date.getDate());
        System.out.println(date);

        Calendar cal = new GregorianCalendar(date.getYear(), date.getMonth(), date.getDate());
        System.out.println(cal.getTime());
    }
}
_

出力は次のとおりです。Dateの非推奨のgetYear()およびgetMonth()メソッドから月と年が正しく返されないことを示しています。

年:111
月:11
日:25
2011-12-25
木曜日12月25日00:00:00 EST 111

上記で試したコンストラクターを使用することはできず、GregorianCalendarのみを取るDateコンストラクターがないため、_Java.sql.Date_オブジェクトをGregorianCalendar

20
Bill the Lizard

これは2つの手順で行う必要があります。最初にデフォルトのコンストラクターを使用してGregorianCalendarを作成し、次に(紛らわしい名前の) setTime メソッドを使用して日付を設定します。

import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;

public class DateTester {

    public static void main(String[] args) {
        Date date = Date.valueOf("2011-12-25");
        System.out.println(date);

        Calendar cal = new GregorianCalendar();
        cal.setTime(date);
        System.out.println(cal.getTime());
    }
}

出力は次のとおりです。

2011-12-25
2011年12月25日00:00:00 EST 2011

33
Bill the Lizard

私は記憶から行きますが、試してみましたか

Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());
4
DaveH

これを試して。

import Java.sql.Date;
import Java.util.Calendar;
import Java.util.GregorianCalendar;

public class DateTester {

    public static void main(String[] args) {
        Date date = Date.valueOf("2011-12-25");
        System.out.println(date);

        Calendar cal = new GregorianCalendar();
        cal.setTime(date);
        System.out.println(cal.getTime());
    }
}
4

setTimeInMillis() を使用します。

Java.sql.Date date = new Java.sql.Date(System.currentTimeMillis());
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(date.getTime());

これが最も簡単な方法だと思います。

2
ceklock