java.sql.Date、java.sql.Time、java.sql.TimeStamp真的有区别吗?

java.sql.Date、java.sql.Time、java.sql.TimeStamp到底啥区别?我们一起打破砂锅问到底:
网上很多说java.sql.Date只记录日期、java.sql.Time只记录时分秒、java.sql.TimeStamp记录年月日时分秒纳秒。
为什么下面的代码(1)、(2)、(3)、(4)获取完时间,年月日时分秒纳秒等等都能取出来?
  public static void main(String[] args) {   
  //(1)   
  java.util.Date time1 = new java.util.Date();   
  //(2)   
  java.sql.Date time2 = new java.sql.Date(System.currentTimeMillis());   
  //(3)   
  java.sql.Time time3 = new java.sql.Time(System.currentTimeMillis());     
  //(4)
  java.sql.Timestamp time = new java.sql.Timestamp(System.currentTimeMillis());     
  System.out.println(time);   
  DateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss 今年第ww周  第DD天");     
  System.out.println("北京时间:" + sdf.format(time1) + "\n");   
  System.out.println("北京时间:" + sdf.format(time2)+ "\n");   
  System.out.println("北京时间:" + sdf.format(time3)+ "\n");
  System.out.println("北京时间:" + sdf.format(time)+ "\n");
 }

 

 

 

我今天捣鼓了一下,发现java.sql.Date和java.sql.Time,都是继承java.util.Date。 而new一个java.util.Date() 实际上都是取System.currentTimeMillis()。
网上说的不是很准确,java.sql.Date和java.sql.Time只是他们的toString()方法的格式控制不一样,而println(obj)恰恰就是调用的obj的toString()方法,
所以说输出的日期格式会有 “java.sql.Date只记录日期、java.sql.Time只记录时分秒、java.sql.TimeStamp记录年月日时分秒纳秒”谬论。
sdf.format(time),用的是java.util.Date的 fastTime,fastTime也就是System.currentTimeMillis()取得的值, 所以 sdf.format(time) 打印出来是一模一样的。

转载于:https://www.cnblogs.com/airduce/p/7069491.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值