zoukankan      html  css  js  c++  java
  • 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) + "
    ");   
      System.out.println("北京时间:" + sdf.format(time2)+ "
    ");   
      System.out.println("北京时间:" + sdf.format(time3)+ "
    ");
      System.out.println("北京时间:" + sdf.format(time)+ "
    ");
     }

    我今天捣鼓了一下,发现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) 打印出来是一模一样的。
  • 相关阅读:
    并不对劲的bzoj3932: [CQOI2015]任务查询系统
    并不对劲的bzoj4868: [Shoi2017]期末考试
    并不对劲的bzoj1853:[SCOI2010]幸运数字
    并不对劲的bzoj4199: [Noi2015]品酒大会
    并不对劲的bzoj1500: [NOI2005]维修数列
    并不对劲的hdu4777
    并不对劲的线段树套平衡树
    44.Linked List Cycle II(环的入口节点)
    43.Word Break(看字符串是否由词典中的单词组成)
    42.Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/airduce/p/7069491.html
Copyright © 2011-2022 走看看