区别:
- java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date。
- java.util.Date 是在除了SQL语句的情况下面使用,是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它。
- java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object ==> java.util.Date ==> java.sql.Date
相互转换
java.sql.Date转java.util.Date
@Test
public void test07(){
/*
* java.sql.Date ====> java.util.Date
*/
java.sql.Date date0 = new Date(System.currentTimeMillis());
System.out.println("date0==========="+date0);
java.util.Date date = new java.util.Date(date0.getTime());
System.out.println("date==========="+date);
}
可以看出,数据库中的日期默认格式是 yyyy-MM-dd 的。
java.util.Date转java.sql.Date
@Test
public void test08(){
/*
* java.sql.Date ====> java.util.Date
*/
java.util.Date utilDate = new java.util.Date();
System.out.println(utilDate);
java.sql.Date sqlDate = new Date(utilDate.getTime());
java.sql.Time sqlTime = new Time(utilDate.getTime());
java.sql.Timestamp stp = new Timestamp(utilDate.getTime());
System.out.println("=========="+sqlDate);
System.out.println("=========="+sqlTime);
System.out.println("=========="+stp);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(utilDate));
System.out.println(sdf.format(sqlDate));
System.out.println(sdf.format(sqlTime));
System.out.println(sdf.format(stp));
}
可以看出java.util.Date初始化的日期格式很复杂,然后通过java.sql.Date的各种方法可以分别获取对应的日期和时间。并且都能用SimpleDateFormat格式化。
如果要分别得到 年,月,日,可以这样
SimpleDateFormat sy = new SimpleDateFormat("yyyy");
SimpleDateFormat sM = new SimpleDateFormat("MM");
SimpleDateFormat sd = new SimpleDateFormat("dd");
System.out.println("year======"+sy.format(utilDate));
System.out.println("Month======"+sM.format(utilDate));
System.out.println("day======"+sd.format(utilDate));
目前就了解到这里,后续有机会再增加。