年、月、日をとるコンストラクターを使用して 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
?
これは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
私は記憶から行きますが、試してみましたか
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());
これを試して。
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());
}
}
setTimeInMillis() を使用します。
Java.sql.Date date = new Java.sql.Date(System.currentTimeMillis());
Calendar cal = new GregorianCalendar();
cal.setTimeInMillis(date.getTime());
これが最も簡単な方法だと思います。