今天捨友問我,JDBC中的stmt.setDate()怎麼挺入當前時間,傳入參數new java.util.Date()不行, 傳入 參數new java.sql.Date(),試了一會,還是不行。此時,才發覺,自從用了Hibernate,JPA之後, 我連原始的東西都忘記了。這可是一個很可悲的問題,決定來一次小測試!
package test;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class SQLDate {
public static void main(String[] args){
System.out.println(System.currentTimeMillis()); //結果:1244711626453
java.util.Date date1 = new java.util.Date();
System.out.println(date1.toString()); //結果: Thu Jun 11 16:27:57 CST 2009
//java.sql.Date extends java.util.Date
java.sql.Date date2 = new java.sql.Date(System.currentTimeMillis());
System.out.println(date2.toString()); //結果: 2009-06-11
java.sql.Date date3 = new java.sql.Date(date1.getTime());
System.out.println(date3.toString()); //結果:2009-06-11
//Timestamp extends java.util.Date
Timestamp stamp1 = new Timestamp (System.currentTimeMillis());
System.out.println(stamp1.toString()); //結果: 2009-06-11 16:27:57.75
Timestamp stamp2 = new Timestamp (date1.getTime());
System.out.println(stamp2.toString()); //結果: 2009-06-11 16:52:56.171
//日期時間轉換成格式化的字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//format(java.util.Date date), Timestamp是java.util.Date的子類
String timeStr = sdf.format(stamp1);
System.out.println(timeStr); //結果:2009/06/11 16:52:56
//SimpleDateFormat extends DateFormat, DateFormat是抽象類
DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String timeStr2 = df.format(date1);
String timeStr3 = df.format(date2);
System.out.println(timeStr2); //結果: 2009/06/11 16:52:56
System.out.println(timeStr3); //結果: 2009/06/11 16:52:56
//字符串轉化為日期時間
try {
//parse()中的參數必須與sdf中定義的格式一致,否則拋異常
java.util.Date date6 = sdf.parse("2009/12/10 5:12:02");
System.out.println(date6.toString()); //結果: Thu Dec 10 05:12:02 CST 2009
java.sql.Date date7 = new java.sql.Date(date6.getTime());
System.out.println(date7.toString()); //結果: 2009-12-10
//注意: sdf.parse()返回值是java.util.Date類型,不能轉化成java.sql.Date類型
//java.sql.Date date8 = (java.sql.Date)sdf.parse("2009/12/10 5:12:02"); //不可行
Timestamp stamp9 = new Timestamp(date7.getTime());
System.out.println(stamp9.toString()); //結果: 2009-12-10 05:12:02.0
} catch (ParseException e) {
e.printStackTrace();
}
}
}
這樣測試一下,那幾個常用日期時間類和字符串與日期時間類的轉換的用法,也就一目了然了。貼到 博客上,下次再遺忘時,打開來看看,也就立即記起來了!