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) 打印出來是一模一樣的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM