Java?Date類的使用方式(日期處理)
Java Date類的使用
在Java中獲取當(dāng)前時(shí)間,可以使用 java.util.Date 類和 java.util.Calendar 類完成。
其中,Date 類主要封裝了系統(tǒng)的日期和時(shí)間的信息,Calendar 類則會(huì)根據(jù)系統(tǒng)的日歷來(lái)解釋 Date 對(duì)象。
下面詳細(xì)介紹Date類的具體使用。
Date 類
Date 類表示系統(tǒng)特定的時(shí)間戳,可以精確到毫秒。
Date 對(duì)象表示時(shí)間的默認(rèn)順序是星期、月、日、小時(shí)、分、秒、年。
1. 構(gòu)造方法
Date 類有如下兩個(gè)構(gòu)造方法。
Date()
:此種形式表示分配 Date 對(duì)象并初始化此對(duì)象,以表示分配它的時(shí)間(精確到毫秒),使用該構(gòu)造方法創(chuàng)建的對(duì)象可以獲取本地的當(dāng)前時(shí)間。Date(long date)
:此種形式表示從 GMT 時(shí)間(格林尼治時(shí)間)1970 年 1 月 1 日 0 時(shí) 0 分 0 秒開(kāi)始經(jīng)過(guò)參數(shù) date 指定的毫秒數(shù)。
這兩個(gè)構(gòu)造方法的使用示例如下:
Date date1 = new Date(); // 調(diào)用無(wú)參數(shù)構(gòu)造函數(shù) System.out.println(date1.toString()); // 輸出:Wed May 18 21:24:40 CST 2016 Date date2 = new Date(60000); // 調(diào)用含有一個(gè)long類型參數(shù)的構(gòu)造函數(shù) System.out.println(date2); // 輸出:Thu Jan 0108:01:00 CST 1970
Date 類的無(wú)參數(shù)構(gòu)造方法獲取的是系統(tǒng)當(dāng)前的時(shí)間,顯示的順序?yàn)樾瞧?、月、日、小時(shí)、分、秒、年。
Date 類帶 long 類型參數(shù)的構(gòu)造方法獲取的是距離 GMT 指定毫秒數(shù)的時(shí)間,60000 毫秒是一分鐘,而 GMT(格林尼治標(biāo)準(zhǔn)時(shí)間)與 CST(中央標(biāo)準(zhǔn)時(shí)間)相差 8 小時(shí),也就是說(shuō) 1970 年 1 月 1 日 00:00:00 GMT 與 1970 年 1 月 1 日 08:00:00 CST 表示的是同一時(shí)間。
因此距離 1970 年 1 月 1 日 00:00:00 CST 一分鐘的時(shí)間為 1970 年 1 月 1 日 00:01:00 CST,即使用 Date 對(duì)象表示為 Thu Jan 01 08:01:00 CST 1970。
2. 常用方法
Date 類提供了許多與日期和事件相關(guān)的方法,其中常見(jiàn)的方法如下表所示。
方法 | 描述 |
---|---|
boolean after(Date when) | 判斷此日期是否在指定日期之后 |
boolean before(Date when) | 判斷此日期是否在指定日期之前 |
int compareTo(Date anotherDate) | 比較兩個(gè)日期的順序 |
boolean equals(Object obj) | 比較兩個(gè)日期的相等性 |
long getTime() | 返回自 1970 年 1 月 1 日 00:00:00 GMT 以來(lái),此 Date 對(duì)象表示的毫秒數(shù) |
String toString() | 把此 Date 對(duì)象轉(zhuǎn)換為以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。 其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat) |
例 1:
- 下面使用一個(gè)實(shí)例來(lái)具體演示 Date 類的使用。
- 假設(shè),某一天特定時(shí)間要去做一件事,而且那個(gè)時(shí)間已經(jīng)過(guò)去一分鐘之后才想起來(lái)這件事還沒(méi)有辦,這時(shí)系統(tǒng)將會(huì)提示已經(jīng)過(guò)去了多 長(zhǎng)時(shí)間。
具體的代碼如下:
import java.util.Date; import java.util.Scanner; public class Test11 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("請(qǐng)輸入要做的事情:"); String title = input.next(); Date date1 = new Date(); // 獲取當(dāng)前日期 System.out.println("[" + title + "] 這件事發(fā)生時(shí)間為:" + date1); try { Thread.sleep(60000);// 暫停 1 分鐘 } catch (InterruptedException e) { e.printStackTrace(); } Date date2 = new Date(); System.out.println("現(xiàn)在時(shí)間為:" + date2); if (date2.before(date1)) { System.out.println("你還有 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒需要去完成【" + title + "】這件事!"); } else { System.out.println("【" + title + "】事情已經(jīng)過(guò)去了 " + (date2.getTime() - date1.getTime()) / 1000 + " 秒"); } } }
在該程序中,分別使用 Date 類的無(wú)參數(shù)構(gòu)造方法創(chuàng)建了兩個(gè) Date 對(duì)象。
在創(chuàng)建完第一個(gè) Date 對(duì)象后,使用 Thread.sleep() 方法讓程序休眠 60 秒,然后再創(chuàng)建第二個(gè) Date 對(duì)象,這樣第二個(gè) Date 對(duì)象所表示的時(shí)間將會(huì)在第一個(gè) Date 對(duì)象所表示時(shí)間之后,因此“date2.before(date1)”條件表達(dá)式不成立,從而執(zhí)行 else 塊中的代碼,表示事情已經(jīng)發(fā)生過(guò)。
運(yùn)行該程序,執(zhí)行結(jié)果如下所示:
請(qǐng)輸入要做的事情:
收快遞
【收快遞】這件事發(fā)生時(shí)間為:Fri Oct 12 11:11:07 CST 2018
現(xiàn)在時(shí)間為:Fri Oct 12 11:12:07 CST 2018
【收快遞】事情已經(jīng)過(guò)去了 60 秒
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了spring?boot前后端交互之?dāng)?shù)據(jù)格式轉(zhuǎn)換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01java中你的項(xiàng)目應(yīng)該如何正確分層
這篇文章主要介紹了java中你的項(xiàng)目應(yīng)該如何正確分層,業(yè)務(wù)分層對(duì)于代碼規(guī)范是比較重要,決定著以后的代碼是否可復(fù)用,感興趣的可以了解一下2021-04-04初識(shí)sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要為大家介紹了sa-token及登錄授權(quán)簡(jiǎn)單實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Kotlin 和 Java 混合開(kāi)發(fā)入門教程
這篇文章主要介紹了入門 Kotlin 和 Java 混合開(kāi)發(fā),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09SpringMVC的處理器攔截器HandlerInterceptor詳解
這篇文章主要介紹了SpringMVC的處理器攔截器HandlerInterceptor詳解,SpringWebMVC的處理器攔截器,類似于Servlet開(kāi)發(fā)中的過(guò)濾器Filter,用于處理器進(jìn)行預(yù)處理和后處理,需要的朋友可以參考下2024-01-01當(dāng)mybatis返回值遇見(jiàn)內(nèi)部類的問(wèn)題
這篇文章主要介紹了當(dāng)mybatis返回值遇見(jiàn)內(nèi)部類的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12使用Jmeter進(jìn)行http接口測(cè)試的詳細(xì)流程
本文主要針對(duì)http接口進(jìn)行測(cè)試,使用Jmeter工具實(shí)現(xiàn), Jmter工具設(shè)計(jì)之初是用于做性能測(cè)試的,它在實(shí)現(xiàn)對(duì)各種接口的調(diào)用方面已經(jīng)做的比較成熟,因此,本次直接使用Jmeter工具來(lái)完成對(duì)Http接口的測(cè)試,需要的朋友可以參考下2024-12-12