1. 程式人生 > >java.util.Date和java.sql.Date以及System.currentTimeMillis()涉及到時間的問題

java.util.Date和java.sql.Date以及System.currentTimeMillis()涉及到時間的問題

指定格式 註意 設置 date 參數 獲取系統時間 clas 系統時間 測試的

java.util.Date與java.sql.Date的區別

  1. util.Date
1 java.util.Date nowUtil =new java.util.Date();//new了一個util.Date
2 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMMdd HH:mm:ss");//設置格式
3 String time = sdf.format(nowUtil);

5 System.out.println(nowUtil);//直接輸出Date
6 System.out.println(time);//轉換格式再輸出

輸出顯示

2018七月11 21:38:01
Wed Jul 11 21:38:01 CST 2018

2. sql.Date

1 java.sql.Date nowSql=new java.sql.Date(System.currentTimeMillis());//通過調用System.currentTimeMillis()獲得UNIX時間
2 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMMdd HH:mm:ss");
3 String time = sdf.format(nowSql);
4 System.out.println(time);
5 System.out.println(nowSql);

輸出顯示

2018七月11 21:49:12
2018-07-11

1 java.sql.Date nowSql=new java.sql.Date(0);
2 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMMdd HH:mm:ss");
3 String time = sdf.format(nowSql);
4 System.out.println(time);
5 System.out.println(nowSql);

輸出顯示

說明:

通過對比可以看出來,util.Date獲得的時間就是系統時間,sql.Date的時間是UNIX時間戳,所以用java.sql.Date(System.currentTimeMillis())同樣可以獲得當前系統時間。不指定格式直接輸出util.Date的時間信息更加詳細(Wed Jul 11 21:38:01 CST 2018),sql.Date就比較粗只有日期(2018-07-11),但是sql.Date實際上是有存有更詳細的時間信息的,如上測試的結果,將sql.Date得得到的時間進行格式設置後再輸出,也是有具體到小時分鐘的信息。

註意:

java.util.Date()參數可以為空

java.sql.Date()參數不能為空,可以為java.sql.Date(long)/java.sql.Date(int,int,int)。上述例子java.sql.Date(0),取到的是UNIX時間戳1970年1月1日,所以要利用System.currentTimeMills()獲取從UNIX時間戳到系統時間這段時間的毫秒數,作為java.sql.Date()的長整形參數。

所以,如要獲取系統時間可直接用java.util.Date date=new java.util.Date();

java.util.Date和java.sql.Date以及System.currentTimeMillis()涉及到時間的問題