java中的日期時(shí)間類Date和SimpleDateFormat
Date類
概述
Date類的對(duì)象在Java中代表的是當(dāng)前所在系統(tǒng)的此刻日期時(shí)間,說(shuō)白了就是你計(jì)算機(jī)上現(xiàn)實(shí)的時(shí)間。
基本用法
1,直接輸出當(dāng)前日期:
public class Test { public static void main(String[] args){ Date d = new Date(); System.out.println(d); } }
結(jié)果:
Tue Oct 18 19:12:33 CST 2022
2,獲取時(shí)間毫秒值
這里說(shuō)明一下是從1970年1月1日00:00到現(xiàn)在的毫秒數(shù)。嗯?要毫秒值干什么?計(jì)算天數(shù)!
因?yàn)閖ava沒(méi)有直接提供天數(shù)的計(jì)算方法,所以你只能用毫秒數(shù)來(lái)計(jì)算。
public class Test { public static void main(String[] args){ // Date d = new Date(); // System.out.println(d); long time = d.getTime(); System.out.println(time); } }
結(jié)果:
1666092116318
練習(xí):
當(dāng)前時(shí)間加上 1小時(shí)121秒 之后的時(shí)間是多少。
這里有個(gè)知識(shí)點(diǎn),把毫秒類型的數(shù)據(jù)當(dāng)參數(shù)傳進(jìn)去會(huì)自動(dòng)轉(zhuǎn)成日期類型的數(shù)據(jù)。
public class Test { public static void main(String[] args) { Date d = new Date(); System.out.println(d); long time = d.getTime(); time += (60 * 60 + 121) * 1000; Date d2 = new Date(time); System.out.println(d2); } }
結(jié)果:
Tue Oct 18 19:30:31 CST 2022
Tue Oct 18 20:32:32 CST 2022
SimpleDateFormat類
概念
就是簡(jiǎn)單日期格式化類。
上面講的Date類輸出的日期格式是不是過(guò)于復(fù)雜且不符合我們?nèi)粘J褂玫囊?guī)范?
所以出現(xiàn)了SimpleDateFormat類,使日期輸出更簡(jiǎn)潔。
用法
和這里要講的就是構(gòu)造器里的參數(shù)形式:
SimpleDateFormat 對(duì)象名 = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
這一行代碼確立了轉(zhuǎn)換的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是時(shí)、分、秒。注意:有的格式大寫(xiě),有的格式小寫(xiě)
例如 MM 是月份,mm 是分;HH 是 24 小時(shí)制,而 hh 是 12 小時(shí)制。
我們還可以輸出周幾,上午下午,只需在后面加上 "EEE a" 即可。
public class Test { public static void main(String[] args) throws ParseException { String dateStr = "2021-08-06 11:11:11"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse(dateStr); long time = d.getTime() + (2L * 24 * 60 * 60 + 14 * 60 * 60 + 49 * 60 + 6) * 1000; System.out.println(sdf.format(time)); } }
結(jié)果:
2022年10月18日 19:54:47 星期二 下午
案例:
給定某個(gè)時(shí)間,輸出經(jīng)過(guò)多少時(shí)間之后的時(shí)間。
首先你得到的是字符串形式的時(shí)間格式,我們要先解析成日期格式,例如毫秒值或者日期對(duì)象。
需要先轉(zhuǎn)成標(biāo)準(zhǔn)日期格式,再調(diào)用parse方法改成毫秒。這里有一點(diǎn)要說(shuō)明,你給出的時(shí)間的格式要符合java里的日期格式是吧,比如你給的時(shí)間是2022年,你不能只寫(xiě)個(gè)22。
還有一點(diǎn),我們要改的時(shí)間毫秒數(shù)可能很大馬,所以最好轉(zhuǎn)成long類型進(jìn)行計(jì)算。
public class Test { public static void main(String[] args) throws ParseException { String dateStr = "2021-08-06 11:11:11"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse(dateStr); long time = d.getTime() + (2L * 24 * 60 * 60 + 14 * 60 * 60 + 49 * 60 + 6) * 1000; System.out.println(sdf.format(time)); } }
結(jié)果:
2021-08-09 02:00:17
到此這篇關(guān)于java中的日期時(shí)間類Date和SimpleDateFormat的文章就介紹到這了,更多相關(guān)java的Date和SimpleDateFormat內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot?整合?RocketMQ?收發(fā)消息的配置過(guò)程
這篇文章主要介紹了Springboot?整合?RocketMQ?收發(fā)消息,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Java消息隊(duì)列RabbitMQ入門(mén)詳解
這篇文章主要介紹了Java消息隊(duì)列RabbitMQ入門(mén)詳解,RabbitMQ是使用Erlang語(yǔ)言開(kāi)發(fā)的開(kāi)源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議 來(lái)實(shí)現(xiàn),AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布 /訂閱)、可靠性、安全,需要的朋友可以參考下2023-07-07springboot自動(dòng)裝配之@ComponentScan使用方式
@componentScan注解用于掃描指定路徑下的組件,并自動(dòng)將它們注冊(cè)為Spring?Bean,該注解支持多種過(guò)濾規(guī)則,可以自定義掃描過(guò)濾規(guī)則,Spring?Boot通過(guò)ConfigurationClassPostProcessor處理@ComponentScan注解,并在啟動(dòng)時(shí)創(chuàng)建和注冊(cè)BeanDefinition對(duì)象2025-01-01Java多線程之讀寫(xiě)鎖分離設(shè)計(jì)模式
這篇文章主要介紹了Java多線程讀寫(xiě)鎖分離設(shè)計(jì)模式,主要利用Java到嗎完成read read 并行化、read write 不允許、write write 不允許幾項(xiàng)任務(wù),需要的朋友可以參考一下2021-10-10Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解
這篇文章主要介紹了Java中的ReentrantLock、ReentrantReadWriteLock、StampedLock詳解,讀寫(xiě)鎖:一個(gè)資源能夠被多個(gè)讀線程訪問(wèn),或者被一個(gè)寫(xiě)線程訪問(wèn)但是不能同時(shí)存在讀寫(xiě)線程,需要的朋友可以參考下2024-01-01