java.util.Date
在除了SQL語句的情況下使用。java.util.Date 是java.sql.Date的父類。這是常用的表示時間的類,我們通常格式化或者得到當前時間都是用它。一般是日常日期字段。
java.sql.Date
針對SQL語句使用的,它只是包含日期而沒有時間部分。java.util.Date 是java.sql.Date的子類。這個在讀寫數據庫的時候用。一般是數據庫中的時間字段。
java.sql.Timestamp
是一個與java.util.Data類有關的瘦包裝器(thin wrapper),它允許JDBC API將該類標識爲SQl TIMESTAMP值。它通過允許小數秒到納秒界別精度的規範來添加保存SQL TIMESTAMP小數秒值得能力。Timestamp 也提供支持時間戳值得JDBC轉義語法的格式化解析操作的能力。
計算Timestamp對象的精度是二者之一:
只有證書秒纔會存儲在java.util.Date組件中。小數秒(毫秒級)是獨立存在的。傳遞的不是java.sql.Timestamp實例的對象時,Timestamp.equals(Object)方法永遠不會返回true,因爲日期的毫微秒組件是未知的,相對於java.util.Date.equals(Object)方法而言,Timestamp.equals(Object)方法是不對稱的。此外,hashcode方法使用底層jaava.util.Date實現並因此在其計算中不包括毫微秒。鑑於Timestamp類和上述java.util.Date類之間的不同,建議代碼一般不要講Timestamp值爲java.tuil.Date的實例。Timestamp和java.util.Date之間的繼承關係實際上是實現繼承,而不是類型繼承。
Calendar
在java中是一個抽象類(Abstract Class), GregorianCalendar是它的一個具體實現。
1.Calendar的月份的起始值爲0而不是1,所以要設置八月時,我們用7而不是8。即:calendar.set(Calendar.MONTH,7);
轉換關係
Timestamp --> String
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定義格式
Timestamp now = new Timestamp(System.currentTimeMillis());//獲取系統當前時間
String str = df.format(now);
Data --> Timestamp
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定義格式
String time = df.format(new Date());
Timestamp ts = Timestamp.valueOf(time);
java.util.Date <--> java.sql.Date通過getTime方法進行相互構建的。
Calendar --> Date
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();
Date --> Calendar
calendar.setTime(date);
Calendar --> String
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(calendar.getTime());
String --> Calendar
String str = "2013-11-12";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
Date --> String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(new Date());
String --> Date
String str = "2013-11-12";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
String --> Timestamp
Timestamp ts = Timestamp.valueOf("2013-11-12 17:55:00");