深入了解Java核心類庫--Date,Calendar,DateFormat類
一、Date
- Date類表示特定的時(shí)刻,精度為毫秒
- Date的兩個(gè)附加功能:Calendar、DateFormat
Calendar類應(yīng)該用于在日期和時(shí)間字段之間進(jìn)行轉(zhuǎn)換
DateFormat類應(yīng)該用于格式化和解析日期字符串
不推薦使用Date中的相應(yīng)方法
1.1 構(gòu)造方法
1.1.1 Date()
分配時(shí)間,根據(jù)當(dāng)前的默認(rèn)毫秒值創(chuàng)建日期對(duì)象
Date d = new Date(); System.out.println(d);//當(dāng)前時(shí)間:Tue Jun 15 13:44:44 CST 2021
1.1.2 Date(long date)
從1970.1.1 8:00:00開始,根據(jù)給定的毫秒值創(chuàng)建日期對(duì)象
Date d = new Date(1000*60*60*24); System.out.println(d);//Fri Jan 02 08:00:00 CST 1970
1.2 常用方法
Modifier and Type | Method | Description |
---|---|---|
long | getTime() | 返回表示的1970年1月1日00:00:00 GMT以來的毫秒數(shù) |
void | setTime(long time) | 設(shè)置時(shí)間,設(shè)置為1970年1月1日00:00:00之后的 time毫秒的時(shí)間點(diǎn) |
String | toString() | 將此 Date對(duì)象轉(zhuǎn)換成String形式 |
Date d = new Date(); System.out.println(d);//Tue Jun 15 13:53:39 CST 2021 System.out.println(d.getTime())//獲取當(dāng)前時(shí)間的毫秒數(shù):1623736419381 System.out.println(d.toString());//Tue Jun 15 13:53:39 CST 2021 d.setTime(24*60*60*1000);//設(shè)置時(shí)間 System.out.println(d.getTime());//86400000 System.out.println(d);//Fri Jan 02 08:00:00 CST 1970 System.out.println(d.toString());//Fri Jan 02 08:00:00 CST 1970
1.3 其他方法
Modifier and Type | Method | Description |
---|---|---|
int | hashCode() | 返回此對(duì)象的哈希碼值。 |
boolean | after(Date when) | 測試此日期是否在指定日期之后。 |
boolean | before(Date when) | 測試此日期是否在指定日期之前。 |
Object | clone() | 返回此對(duì)象的副本。 |
int | compareTo(Date anotherDate) | 比較兩個(gè)日期的訂購。 |
boolean | equals(Object obj) | 比較兩個(gè)相等的日期。 |
static | Date from(Instant instant) | 從 Instant對(duì)象獲得 Date的實(shí)例。 |
二、Calendar(抽象)
日歷類,提供操作日歷字段的方法
2.1 獲取時(shí)間 get()
Calendar d = Calendar.getInstance(); System.out.println("獲取當(dāng)前時(shí)間:"); System.out.println("年:"+d.get(d.YEAR)); System.out.println("月:"+(d.get(d.MONTH)+1));//月從0開始,所以要+1 System.out.println("日:"+d.get(d.DAY_OF_MONTH)); System.out.println("時(shí):"+d.get(d.HOUR_OF_DAY)); System.out.println("分:"+d.get(d.MINUTE)); System.out.println("秒:"+d.get(d.SECOND));
獲取當(dāng)前時(shí)間: 年:2021 月:6 日:15 時(shí):14 分:25 秒:32
2.2 設(shè)置時(shí)間
- set()
System.out.println("設(shè)置當(dāng)前時(shí)間:"); Calendar d = Calendar.getInstance(); //單獨(dú)設(shè)置 d.set(d.YEAR,2000); System.out.println("年:"+d.get(d.YEAR)); //一起設(shè)置,d.set(year, month, date, hourOfDay, minute, second); d.set(2000, 1, 1, 23, 59, 59); System.out.println("年:"+d.get(d.YEAR)); System.out.println("月:"+d.get(d.MONTH)); System.out.println("日:"+d.get(d.DAY_OF_MONTH)); System.out.println("時(shí):"+d.get(d.HOUR_OF_DAY)); System.out.println("分:"+d.get(d.MINUTE)); System.out.println("秒:"+d.get(d.SECOND));
設(shè)置當(dāng)前時(shí)間: 年:2000 年:2000 月:1 日:1 時(shí):23 分:59 秒:59
2.3 時(shí)間計(jì)算
- add()
Calendar d = Calendar.getInstance(); d.set(2000, 0, 31, 23, 59, 59); System.out.println(d.getTime()); d.add(d.YEAR,10);//增加十年 System.out.println("year+10:"+d.getTime()); d.add(d.MONTH,1);//增加一個(gè)月 System.out.println("month+1:"+d.getTime());
Mon Jan 31 23:59:59 CST 2000 year+10:Sun Jan 31 23:59:59 CST 2010 month+1:Sun Feb 28 23:59:59 CST 2010
2.4 其它方法
Modifier and Type | Method | Description |
---|---|---|
int | getActualMaximum(int field) | 給定此 Calendar的時(shí)間值,返回指定日歷字段可能具有的 Calendar |
int | getActualMinimum(int field) | 給定此 Calendar的時(shí)間值,返回指定日歷字段可能具有的 Calendar |
String | getCalendarType() | 返回此 Calendar的日歷類型 |
int | getFirstDayOfWeek() | 得到一周的第一天是什么 |
static Calendar | getInstance() | 使用默認(rèn)時(shí)區(qū)和區(qū)域設(shè)置獲取日歷 |
static Calendar | getInstance(Locale aLocale) | 使用默認(rèn)時(shí)區(qū)和指定的區(qū)域設(shè)置獲取日歷 |
static Calendar | getInstance(TimeZone zone) | 使用指定的時(shí)區(qū)和默認(rèn)語言環(huán)境獲取日歷 |
static Calendar | getInstance(TimeZone zone, Locale aLocale) | 獲取具有指定時(shí)區(qū)和區(qū)域設(shè)置的日歷 |
TimeZone | getTimeZone() | 獲取時(shí)區(qū)。 |
三、DateFormat(抽象)
格式化和解析日期字符串(將Date創(chuàng)建轉(zhuǎn)化為日常格式)
3.1 構(gòu)造方法
設(shè)置格式
//y:年 M:月 d:日 H:時(shí) m:分 s:秒 SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String text1 = format.format(new Date());//將date轉(zhuǎn)換成已經(jīng)設(shè)置格式的字符串 System.out.println(text1); System.out.println(format.parse("2021年6月10日 10:10:10"));//將日期字符串轉(zhuǎn)換為Date對(duì)象
2021年06月15日 15:00:10 Thu Jun 10 10:10:10 CST 2021
面試題通常會(huì)問道時(shí)間計(jì)算:輸入→parse→date對(duì)象→gettime()→相減得毫秒→換算
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
解決spring cloud gateway 獲取body內(nèi)容并修改的問題
這篇文章主要介紹了解決spring cloud gateway 獲取body內(nèi)容并修改的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問
本文主要介紹了Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Mybatis傳單個(gè)參數(shù)和<if>標(biāo)簽同時(shí)使用的問題及解決方法
這篇文章主要介紹了Mybatis傳單個(gè)參數(shù)和<if>標(biāo)簽同時(shí)使用的問題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05SpringBoot用配置影響B(tài)ean加載@ConditionalOnProperty
這篇文章主要為大家介紹了SpringBoot用配置影響B(tài)ean加載@ConditionalOnProperty示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件詳解
這篇文章主要介紹了Spring整合SpringMVC + Mybatis基礎(chǔ)框架的配置文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Java?數(shù)據(jù)結(jié)構(gòu)進(jìn)階二叉樹題集下
二叉樹可以簡單理解為對(duì)于一個(gè)節(jié)點(diǎn)來說,最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將帶你通過實(shí)際題目來熟練掌握2022-04-04java -jar后臺(tái)啟動(dòng)的四種方式小結(jié)
這篇文章主要介紹了java -jar后臺(tái)啟動(dòng)的四種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09