如何将java.sql.Date对象转换为公历日历?

2022-09-02 02:58:46

我以为我可以使用采用年,月和日的构造函数创建一个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
星期四 12 月 25 00:00:00 EST 111

由于我无法使用上面尝试过的构造函数,并且没有只采用的构造函数,如何将对象转换为?GregorianCalendarDatejava.sql.DateGregorianCalendar


答案 1

您必须分两步完成此操作。首先使用默认构造函数创建一个,然后使用(名称令人困惑的)setTime 方法设置日期。GregorianCalendar

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


答案 2

我要从记忆中走出来,但你有没有试过

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