util包和sql包里的Date类区别,该用哪一个?

java.util.date是java.sql.date的父类,其中java.util.date用于除了数据库以外的任何地方(实际上也可以用于数据库)。两者都有getTime的方法(获取long类型)。所以可以互相转换

java.sql.date date_sql = new java.sql.date(System.currentTime());
java.util.date date = new java,util.date(date_sql.getTime());

反过来转换也是一样的。
另一种转换时:

java.util.date date = new java.util.date(date_sql);//用子类创建父类

preparement中getDate()与setDate(datesql)中返回与传入的参数都是java.sql.date,所以要先进行转换
java.sql.date 没有无参的构造函数,必须传值,java.util.date可以使用无参构造函数,获取的是当前的时间

java.sql.date的时间格式是年-月-日,没有时间部分。
强制从datesql获取时分秒,会抛异常。
但是不代表没有时间部分的精度。

datesql.getTime() == date.getTime()   //true

两个对象都能进行格式化,使用类SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd  hh:mm:ss");
java.util.Date date = new java.util.Date();
System.out.println(simpleDateFormat.formate(date));
java.sql.Date dateSql = new java.sql.Date(date.getTime());
System.out.println(simpleDateFormat.formate(dateSql));  // 通过format转换后可以显示时分秒

注:java.sql.date 通过格式化后可以显示时分秒,也就是他时分秒的精度并没有丢失

java.util.Date表示特定的瞬间,精确到毫秒


java.sql.Date一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”


java.sql.Date为 java.util.Date的一个子类,继承了java.util.Date中的方法,只不过两者的tostring()不同, java.sql.Date对其进行了重写。

java.util.Date把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 输出

java.sql.Date 则格式化日期转义形式 yyyy-mm-dd 输出。


总结:

正因为他们之间有继承的关系,所以实际上,在JDBC与数据库交互的时候,用哪一个Date都是可以的,只是侧重点不同而已。 (实际上项目中大部分还是用util包中的Date)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T-OPEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值