java中Date和Timestamp類型的相互轉(zhuǎn)換方式
java Date和Timestamp類型相互轉(zhuǎn)換
重要的概念
日期類和時(shí)間戳類都是用一個(gè)時(shí)間數(shù)值——日期相對(duì)于基準(zhǔn)日期(1970年1月1日 GMT時(shí)間(格林尼治時(shí)間)0時(shí)0分0秒)的時(shí)間間隔(以毫秒為單位)long類型 來構(gòu)造的
通過Date對(duì)象和Timestamp對(duì)象的getTime() 方法——獲取時(shí)間數(shù)值,作為中間變量,可以實(shí)現(xiàn)轉(zhuǎn)換
import java.sql.Timestamp; import java.util.Date; public class Test{ public static void main(String[] args){ //Date 轉(zhuǎn) Timestamp Date d = new Date(); //系統(tǒng)時(shí)間 System.out.println(d.toString()); //Wed Dec 14 17:47:51 CST 2022 (CST表示北京時(shí)間) long time = d.getTime(); System.out.println(time); //1671011534602,這其實(shí)是以毫秒為單位的 Timestamp timestamp = new Timestamp(time); System.out.println(timestamp.toString()); //2022-12-14 17:47:51.531 (構(gòu)造的時(shí)間戳有毫秒) //Timestamp 轉(zhuǎn) Date Timestamp timestamp2 = new Timestamp(1671011899628l); //是2022-12-14 17:58:19.628的時(shí)間數(shù)值 System.out.println(timestamp2.toString()); //2022-12-14 17:58:19.628 long time2 = timestamp2.getTime(); Date date2 = new Date(time2); System.out.println(date2.toString()); //Wed Dec 14 17:58:19 CST 2022 (Date類型沒有毫秒) } }
Date、Timestamp、String、Calendar之間的關(guān)系和轉(zhuǎn)換
最近接到一個(gè)需求就是需要查詢指定時(shí)間范圍內(nèi)的所有用戶信息,而且需要拿到范圍內(nèi)的所有年月字符串~
其實(shí)這個(gè)并不難,但是數(shù)據(jù)庫中的時(shí)間類型是Timestamp類型的,而要求傳入的時(shí)間類型為Date類型,所以就會(huì)涉及到時(shí)間類型的轉(zhuǎn)換,這里我就把最近接觸到的時(shí)間類型之間的轉(zhuǎn)換總結(jié)下,供大家參考~
1、StringToDate
@Test ? ? public void testStringToDate() throws ParseException { ? ? ? ? String dateStr = "2021-12-10 11:11:11"; ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ? ? ? ? //java.util包下的Date類; ? ? ? ? Date date = sdf.parse(dateStr); ? ? ? ? System.out.println(date.toString()); ? ? ? ? //Fri Dec 10 11:11:11 CST 2021 ? ? }
2、DateToString
? ? @Test ? ? public void testDateToString(){ ? ? ? ? Date date = new Date(); ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ? ? ? ? String dateStr = sdf.format(date); ? ? ? ? System.out.println(dateStr); // ? ? ? ?2021-12-10 10:22:31 ? ? }
3、DateToTimeStamp
@Test ? ? public void testDateToTimeStamp(){ ? ? ? ? Date date = new Date(); ? ? ? ? Timestamp timestamp = new Timestamp(date.getTime()); ? ? ? ? System.out.println(timestamp); ? ? ? ? // ? ? ? ?2021-12-10 10:29:25.978 ? ? }
4、TimestampToDate
? ? @Test ? ? public void testTimestampToDate(){ ? ? ? ? Timestamp timestamp = new Timestamp(System.currentTimeMillis()); ? ? ? ? Date date = new Date(timestamp.getTime()); ? ? ? ? System.out.println(date); // ? ? ? ?Fri Dec 10 10:30:16 CST 2021 ? ? }
5、StringToTimestamp
? ? @Test ? ? public void testStringToTimestamp(){ ? ? ? ? String dateStr = "2021-12-10 11:11:11"; ? ? ? ? Timestamp timestamp = Timestamp.valueOf(dateStr); ? ? ? ? System.out.println(timestamp); // ? ? ? ?2021-12-10 11:11:11.0 ? ? }
6、TimestampToString
? ? @Test ? ? public void testTimestampToString(){ ? ? ? ? Timestamp timestamp = new Timestamp(System.currentTimeMillis()); ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat(); ? ? ? ? String s = sdf.format(timestamp); ? ? ? ? System.out.println(s); // ? ? ? ?21-12-10 上午10:27 ? ? }
7、DateToCalendar
? ?@Test ? ? public void testDateToCalendar(){ ? ? ? ? Date date = new Date(); ? ? ? ? Calendar instance = Calendar.getInstance(); ? ? ? ? instance.setTime(date); ? ? ? ? System.out.println(instance.getTime()); // ? ? ? ?Fri Dec 10 10:36:39 CST 2021 ? ? }
8、CalendarToDate
? ? @Test ? ? public void testCalendarToDate(){ ? ? ? ? Calendar instance = Calendar.getInstance(); ? ? ? ? Date time = instance.getTime(); ? ? ? ? System.out.println(time); // ? ? ? ?Fri Dec 10 10:56:30 CST 2021 ? ? }
其實(shí)時(shí)間的類型有好多種,但是其實(shí)轉(zhuǎn)換還是比較簡(jiǎn)單。
為了方便我們處理時(shí)間對(duì)象,比如:拿日期中的年份月份等信息,我們還有各種時(shí)間工具類,還是很方便的啦~
有些時(shí)間類的API已經(jīng)過時(shí)了,大家最好用比較新的API,避免不必要的差值!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Spring Boot配置特定屬性spring.profiles的方法
這篇文章主要介紹了Spring Boot配置特定屬性spring.profiles的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11spring boot實(shí)戰(zhàn)教程之shiro session過期時(shí)間詳解
這篇文章主要給大家介紹了關(guān)于spring boot實(shí)戰(zhàn)教程之shiro session過期時(shí)間的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-10-10教你怎么使用Java實(shí)現(xiàn)WebSocket
這篇文章主要介紹了教你怎么使用Java WebSocket,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎
二維碼已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚慕M成部分了,登錄需要掃一掃二維碼、買東西付錢需要掃一掃二維碼、開會(huì)簽到也需要掃一掃二維碼,那么如此使用的二維碼技術(shù),背后的原理是怎樣的呢?本文將結(jié)合二維碼的發(fā)展歷程以及典型應(yīng)用場(chǎng)景,分析二維碼背后的技術(shù)原理2022-02-02