通过查阅API可以看到java.sql.Date是java.util.Date的子类。
下面我们用代码来测试一下:
package Oop04;
import java.util.Date;
/**
* Author lilshork
* Date 2022/8/2 1:49
**/
public class UtilTest {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
}
}
可以看到,如果是用的util包下的Date类,输出的时间包含了年月日时分秒。
下面构造一个sql下的Date类:
package Oop04;
import java.util.Date;
/**
* Author lilshork
* Date 2022/8/2 1:49
**/
public class SqlTest {
public static void main(String[] args) {
Date date = new Date();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
System.out.println(sqlDate);
}
}
可以看到,如果是sql包下的Date类,只能输出年月日。
sql-->util
package Oop04;
import java.util.Date;
/**
* Author lilshork
* Date 2022/8/2 1:49
**/
public class SqlTest {
public static void main(String[] args) {
Date date1 = new Date();
System.out.println(date1.getTime());
Date date = new java.sql.Date(1659377568275L);
System.out.println(date.toString());
}
}
util-->sql
package Oop04;
import java.util.Date;
/**
* Author lilshork
* Date 2022/8/2 1:49
**/
public class SqlTest {
public static void main(String[] args) {
Date now2 = new Date();
java.sql.Date date = new java.sql.Date(now2.getTime());
System.out.println(date);
}
}
而通过之前学过的多态里面向下转型和向上转型的知识将其与这两个类联系起来,因为java.sql.Date是java.util.Date的子类,以及查阅相关资料, java.util.Date类转java.sql.Date类,向下转型,需要调用java.util.Date类的getTime()方法,取得long类型返回值,作为参数转换。而java.sql.Date类转java.util.Date类,向上转型,会自动转换,但是数值我们可以很明显的看到,也没有了时分秒。
总结:
①java.sql.Date是java.util.Date的子类。
②util.Date 年月日时分秒 / sql.Date 只有 年月日。
③ java.util.Date类转java.sql.Date类,向下转型,需要调用java.util.Date类的getTime()方法;
java.sql.Date类转java.util.Date类,向上转型,会自动转换。