我以为我能够使用接受年、月和日的构造函数创建一个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
由于我不能使用上面尝试的构造函数,并且没有只接受Date
的GregorianCalendar
构造函数,因此如何将java.sql.Date
对象转换为GregorianCalendar
发布于 2012-02-03 00:25:29
您必须在两个步骤中完成此操作。首先使用默认构造函数创建一个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
发布于 2012-02-03 00:28:15
我在回忆,但你试过了吗
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(rs.getDate());
发布于 2012-02-03 00:32:01
尝尝这个。
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());
}
}
https://stackoverflow.com/questions/9115897
复制相似问题