java.sql.Timestamp(時間戳)
繼承父類:java.util.Date
所有已實現的接口:Serializable, Cloneable, Comparable<Date>
主要構造方法:Timestamp(long millis) 使用毫秒時間值構造 Timestamp 對象。
Timestamp允許 JDBC API 將該類標識為 SQL TIMESTAMP 值。它通過允許小數秒到納秒級精度的規范來添加保存 SQLTIMESTAMP 小數秒值的能力。
Timestamp 也提供支持時間戳值的 JDBC 轉義語法的格式化和解析操作的能力,主要用于寫一些與數據庫連接時的日期處理。
例如:
在 ResultSet中我們經常使用的setDate或getDate的數據類型是java.sql.Date,而在平時java程序中我們一般習慣使用 java.util.Date。
但是java.sql.Date 只存儲日期數據不存儲時間數據 ,這種符合規范的類型其實并沒有把時分秒存進數據庫,所以存取時就應該用Timestamp的setTimestamp()和
getTimestamp()。
整理一: String --> Timestamp:
Timestamp轉換為String可以直接.toString(),但有時候顯示時是不需要小數位后面的毫秒值,需要借助DateFormat在轉換為String時重新定義格式。
使用Timestamp的valueOf()方法,
1
2
3
4
5
|
Timestamp time= new Timestamp(System.currentTimeMillis()); //獲取系統當前時間 SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String timeStr = df.format(time); time = Timestamp.valueOf(timeStr); System.out.println(time); //2017-05-06 15:54:21.0 |
整理二: java.util.Date --> Timestamp
方式1: 使用Timestamp的構造方法
1
2
|
Date date = new Date(); Timestamp ts = new Timestamp(date.getTime()); |
方式2:
注意:父類不能直接向子類轉化,需要借助中間的String,并且format的格式要與Timestamp的字符串類型格式相匹配
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
1
2
3
4
|
Date date = new Date(); DateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateStr = sdf.format(date); Timestamp ts = Timestamp.valueOf(dateStr); //2017-05-06 15:54:21.0 |
整理三:
通過構造方法創建Timestamp 對象,獲取毫秒值有下面三種方法:
方法1:
System.currentTimeMillis();
方法2:
Calendar.getInstance().getTimeInMillis();
方法3:
new Date().getTime();
測試證明:System.currentTimeMillis() 這種方式速度最快
Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,因為Canlendar因為要處理時區問題會耗費很多的時間。
所以建議多使用第一種方式。
方法摘要
boolean after(Timestamp ts)
指示此 Timestamp 對象是否晚于給定的 Timestamp 對象。
??boolean before(Timestamp ts)
? ?指示此 Timestamp 對象是否早于給定的 Timestamp 對象。
int compareTo(Date o)
? ?將此 Timestamp 對象與給定的 Date(必須為 Timestamp 對象)相比較。
int compareTo(Timestamp ts)
? ?將此 Timestamp 對象與給定 Timestamp 對象相比較。
boolean equals(Object ts)
? ?測試此對象是否等于給定的 Timestamp 對象。
boolean equals(Timestamp ts)
? ?測試此 Timestamp 對象是否等于給定的 Timestamp 對象。
int getNanos()
? ?獲取此 Timestamp 對象的 nanos 值。
long getTime()
? ?返回此 Timestamp 對象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以來的毫秒數。
void setNanos(int n)
? ?將此 Timestamp 對象的 nanos 字段設置為給定值。
void setTime(long time)
? ?設置此 Timestamp 對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的時間點。
String toString()
? ?使用 JDBC 時間戳轉義格式編排時間戳。
static Timestamp valueOf(String s)
? ?將使用 JDBC 時間戳轉義格式的 String 對象轉換為 Timestamp 值。
實例代碼:
1
2
3
4
5
6
|
tLotteryAnnouncement.setDateTime( new Timestamp(System.currentTimeMillis())); if (StringUtils.isNotBlank(tIsusesKj.getOpenTime())){ tLotteryAnnouncement.setOpenTime(Timestamp.valueOf(tIsusesKj.getOpenTime())); } else { tLotteryAnnouncement.setOpenTime( new Timestamp(tIsusesKj.getModifyDate().getTime())); } |
到此這篇關于Java java.sql.Timestamp時間戳案例詳解的文章就介紹到這了,更多相關Java java.sql.Timestamp時間戳內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/evilcry2012/article/details/78179795/