Java java.sql.Timestamp時(shí)間戳案例詳解
java.sql.Timestamp(時(shí)間戳)
繼承父類:java.util.Date
所有已實(shí)現(xiàn)的接口:Serializable, Cloneable, Comparable<Date>
主要構(gòu)造方法:Timestamp(long millis) 使用毫秒時(shí)間值構(gòu)造 Timestamp 對(duì)象。
Timestamp允許 JDBC API 將該類標(biāo)識(shí)為 SQL TIMESTAMP 值。它通過(guò)允許小數(shù)秒到納秒級(jí)精度的規(guī)范來(lái)添加保存 SQLTIMESTAMP 小數(shù)秒值的能力。
Timestamp 也提供支持時(shí)間戳值的 JDBC 轉(zhuǎn)義語(yǔ)法的格式化和解析操作的能力,主要用于寫一些與數(shù)據(jù)庫(kù)連接時(shí)的日期處理。
例如:
在 ResultSet中我們經(jīng)常使用的setDate或getDate的數(shù)據(jù)類型是java.sql.Date,而在平時(shí)java程序中我們一般習(xí)慣使用 java.util.Date。
但是java.sql.Date 只存儲(chǔ)日期數(shù)據(jù)不存儲(chǔ)時(shí)間數(shù)據(jù) ,這種符合規(guī)范的類型其實(shí)并沒(méi)有把時(shí)分秒存進(jìn)數(shù)據(jù)庫(kù),所以存取時(shí)就應(yīng)該用Timestamp的setTimestamp()和
getTimestamp()。
整理一: String --> Timestamp:
Timestamp轉(zhuǎn)換為String可以直接.toString(),但有時(shí)候顯示時(shí)是不需要小數(shù)位后面的毫秒值,需要借助DateFormat在轉(zhuǎn)換為String時(shí)重新定義格式。
使用Timestamp的valueOf()方法,
Timestamp time= new Timestamp(System.currentTimeMillis());//獲取系統(tǒng)當(dāng)前時(shí)間 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的構(gòu)造方法
Date date = new Date(); Timestamp ts = new Timestamp(date.getTime());
方式2:
注意:父類不能直接向子類轉(zhuǎn)化,需要借助中間的String,并且format的格式要與Timestamp的字符串類型格式相匹配
java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
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
整理三:
通過(guò)構(gòu)造方法創(chuàng)建Timestamp 對(duì)象,獲取毫秒值有下面三種方法:
方法1:
System.currentTimeMillis();
方法2:
Calendar.getInstance().getTimeInMillis();
方法3:
new Date().getTime();
測(cè)試證明:System.currentTimeMillis() 這種方式速度最快
Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,因?yàn)镃anlendar因?yàn)橐幚頃r(shí)區(qū)問(wèn)題會(huì)耗費(fèi)很多的時(shí)間。
所以建議多使用第一種方式。
方法摘要
boolean after(Timestamp ts)
指示此 Timestamp 對(duì)象是否晚于給定的 Timestamp 對(duì)象。
boolean before(Timestamp ts)
指示此 Timestamp 對(duì)象是否早于給定的 Timestamp 對(duì)象。
int compareTo(Date o)
將此 Timestamp 對(duì)象與給定的 Date(必須為 Timestamp 對(duì)象)相比較。
int compareTo(Timestamp ts)
將此 Timestamp 對(duì)象與給定 Timestamp 對(duì)象相比較。
boolean equals(Object ts)
測(cè)試此對(duì)象是否等于給定的 Timestamp 對(duì)象。
boolean equals(Timestamp ts)
測(cè)試此 Timestamp 對(duì)象是否等于給定的 Timestamp 對(duì)象。
int getNanos()
獲取此 Timestamp 對(duì)象的 nanos 值。
long getTime()
返回此 Timestamp 對(duì)象表示的自 1970 年 1 月 1 日 00:00:00 GMT 以來(lái)的毫秒數(shù)。
void setNanos(int n)
將此 Timestamp 對(duì)象的 nanos 字段設(shè)置為給定值。
void setTime(long time)
設(shè)置此 Timestamp 對(duì)象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的時(shí)間點(diǎn)。
String toString()
使用 JDBC 時(shí)間戳轉(zhuǎn)義格式編排時(shí)間戳。
static Timestamp valueOf(String s)
將使用 JDBC 時(shí)間戳轉(zhuǎn)義格式的 String 對(duì)象轉(zhuǎn)換為 Timestamp 值。
實(shí)例代碼:
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())); }
到此這篇關(guān)于Java java.sql.Timestamp時(shí)間戳案例詳解的文章就介紹到這了,更多相關(guān)Java java.sql.Timestamp時(shí)間戳內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中map和對(duì)象互轉(zhuǎn)工具類的實(shí)現(xiàn)示例
這篇文章主要介紹了java中map和對(duì)象互轉(zhuǎn)工具類的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Java中LinkedList和ArrayList的效率分析
本文主要介紹了Java中LinkedList和ArrayList的效率分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02java awt實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了java awt實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12SpringBoot中讀取jar包中的resources目錄下的文件的三種方式
這篇文章給大家總結(jié)了SpringBoot讀取 jar 包中的 resources 目錄下的文件的三種方式,文中有詳細(xì)的代碼示例供大家參考,,需要的朋友可以參考下2023-06-06java數(shù)據(jù)結(jié)構(gòu)和算法中哈希表知識(shí)點(diǎn)詳解
在本篇文章里小編給大家分享了關(guān)于java數(shù)據(jù)結(jié)構(gòu)和算法中哈希表的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-06-06