java中Date和Timestamp類(lèi)型的相互轉(zhuǎn)換方式
java Date和Timestamp類(lèi)型相互轉(zhuǎn)換
重要的概念
日期類(lèi)和時(shí)間戳類(lèi)都是用一個(gè)時(shí)間數(shù)值——日期相對(duì)于基準(zhǔn)日期(1970年1月1日 GMT時(shí)間(格林尼治時(shí)間)0時(shí)0分0秒)的時(shí)間間隔(以毫秒為單位)long類(lèi)型 來(lái)構(gòu)造的
通過(guò)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類(lèi)型沒(méi)有毫秒)
}
}Date、Timestamp、String、Calendar之間的關(guān)系和轉(zhuǎn)換
最近接到一個(gè)需求就是需要查詢(xún)指定時(shí)間范圍內(nèi)的所有用戶(hù)信息,而且需要拿到范圍內(nèi)的所有年月字符串~
其實(shí)這個(gè)并不難,但是數(shù)據(jù)庫(kù)中的時(shí)間類(lèi)型是Timestamp類(lèi)型的,而要求傳入的時(shí)間類(lèi)型為Date類(lèi)型,所以就會(huì)涉及到時(shí)間類(lèi)型的轉(zhuǎn)換,這里我就把最近接觸到的時(shí)間類(lèi)型之間的轉(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類(lèi);
? ? ? ? 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í)間的類(lèi)型有好多種,但是其實(shí)轉(zhuǎn)換還是比較簡(jiǎn)單。
為了方便我們處理時(shí)間對(duì)象,比如:拿日期中的年份月份等信息,我們還有各種時(shí)間工具類(lèi),還是很方便的啦~
有些時(shí)間類(lèi)的API已經(jīng)過(guò)時(shí)了,大家最好用比較新的API,避免不必要的差值!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Spring Boot配置特定屬性spring.profiles的方法
這篇文章主要介紹了Spring Boot配置特定屬性spring.profiles的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11
spring boot實(shí)戰(zhàn)教程之shiro session過(guò)期時(shí)間詳解
這篇文章主要給大家介紹了關(guān)于spring boot實(shí)戰(zhàn)教程之shiro session過(guò)期時(shí)間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-10-10
教你怎么使用Java實(shí)現(xiàn)WebSocket
這篇文章主要介紹了教你怎么使用Java WebSocket,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
Java番外雜談之每天掃的二維碼你了解它內(nèi)含的信息嗎
二維碼已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚慕M成部分了,登錄需要掃一掃二維碼、買(mǎi)東西付錢(qián)需要掃一掃二維碼、開(kāi)會(huì)簽到也需要掃一掃二維碼,那么如此使用的二維碼技術(shù),背后的原理是怎樣的呢?本文將結(jié)合二維碼的發(fā)展歷程以及典型應(yīng)用場(chǎng)景,分析二維碼背后的技術(shù)原理2022-02-02

