21

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());
    }
}

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

年: 111
月: 11
日: 25
2011-12-25
Thu Dec 25 00:00:00 EST 111

上記で試したコンストラクターを使用できず、 をGregorianCalendar受け取るだけのコンストラクターがないため、オブジェクトをDateに変換するにはどうすればよいですか?java.sql.DateGregorianCalendar

4

4 に答える 4

35

これは 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
日 12 月 25 日 00:00:00 EST 2011

于 2012-02-02T16:25:28.983 に答える
4

私は記憶から離れていますが、試しましたか

Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());
于 2012-02-02T16:28:14.653 に答える
4

これを試して。

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());
    }
}
于 2012-02-02T16:32:00.910 に答える
2

setTimeInMillis()を使用します。

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

これが一番簡単な方法だと思います。

于 2014-01-22T13:38:28.783 に答える