深入了解Java核心類庫--Date,Calendar,DateFormat類
一、Date
- Date類表示特定的時刻,精度為毫秒
- Date的兩個附加功能:Calendar、DateFormat
Calendar類應(yīng)該用于在日期和時間字段之間進行轉(zhuǎn)換
DateFormat類應(yīng)該用于格式化和解析日期字符串
不推薦使用Date中的相應(yīng)方法
1.1 構(gòu)造方法
1.1.1 Date()
分配時間,根據(jù)當(dāng)前的默認毫秒值創(chuàng)建日期對象
Date d = new Date(); System.out.println(d);//當(dāng)前時間:Tue Jun 15 13:44:44 CST 2021
1.1.2 Date(long date)
從1970.1.1 8:00:00開始,根據(jù)給定的毫秒值創(chuàng)建日期對象
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è)置為1970年1月1日00:00:00之后的 time毫秒的時間點 |
| String | toString() | 將此 Date對象轉(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ù):1623736419381
System.out.println(d.toString());//Tue Jun 15 13:53:39 CST 2021
d.setTime(24*60*60*1000);//設(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() | 返回此對象的哈希碼值。 |
| boolean | after(Date when) | 測試此日期是否在指定日期之后。 |
| boolean | before(Date when) | 測試此日期是否在指定日期之前。 |
| Object | clone() | 返回此對象的副本。 |
| int | compareTo(Date anotherDate) | 比較兩個日期的訂購。 |
| boolean | equals(Object obj) | 比較兩個相等的日期。 |
| static | Date from(Instant instant) | 從 Instant對象獲得 Date的實例。 |
二、Calendar(抽象)
日歷類,提供操作日歷字段的方法
2.1 獲取時間 get()
Calendar d = Calendar.getInstance();
System.out.println("獲取當(dāng)前時間:");
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("時:"+d.get(d.HOUR_OF_DAY));
System.out.println("分:"+d.get(d.MINUTE));
System.out.println("秒:"+d.get(d.SECOND));
獲取當(dāng)前時間:
年:2021
月:6
日:15
時:14
分:25
秒:32
2.2 設(shè)置時間
- set()
System.out.println("設(shè)置當(dāng)前時間:");
Calendar d = Calendar.getInstance();
//單獨設(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("時:"+d.get(d.HOUR_OF_DAY));
System.out.println("分:"+d.get(d.MINUTE));
System.out.println("秒:"+d.get(d.SECOND));
設(shè)置當(dāng)前時間: 年:2000 年:2000 月:1 日:1 時:23 分:59 秒:59
2.3 時間計算
- 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);//增加一個月
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的時間值,返回指定日歷字段可能具有的 Calendar |
| int | getActualMinimum(int field) | 給定此 Calendar的時間值,返回指定日歷字段可能具有的 Calendar |
| String | getCalendarType() | 返回此 Calendar的日歷類型 |
| int | getFirstDayOfWeek() | 得到一周的第一天是什么 |
| static Calendar | getInstance() | 使用默認時區(qū)和區(qū)域設(shè)置獲取日歷 |
| static Calendar | getInstance(Locale aLocale) | 使用默認時區(qū)和指定的區(qū)域設(shè)置獲取日歷 |
| static Calendar | getInstance(TimeZone zone) | 使用指定的時區(qū)和默認語言環(huán)境獲取日歷 |
| static Calendar | getInstance(TimeZone zone, Locale aLocale) | 獲取具有指定時區(qū)和區(qū)域設(shè)置的日歷 |
| TimeZone | getTimeZone() | 獲取時區(qū)。 |
三、DateFormat(抽象)
格式化和解析日期字符串(將Date創(chuàng)建轉(zhuǎn)化為日常格式)
3.1 構(gòu)造方法
設(shè)置格式
//y:年 M:月 d:日 H:時 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對象
2021年06月15日 15:00:10 Thu Jun 10 10:10:10 CST 2021
面試題通常會問道時間計算:輸入→parse→date對象→gettime()→相減得毫秒→換算
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
詳解spring cloud hystrix 請求合并collapsing
這篇文章主要介紹了詳解spring cloud hystrix 請求合并collapsing,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
java學(xué)生管理系統(tǒng)界面簡單實現(xiàn)(全)
這篇文章主要為大家詳細介紹了java學(xué)生管理系統(tǒng)界面的簡單實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
Java ThreadLocal原理解析以及應(yīng)用場景分析案例詳解
這篇文章主要介紹了Java ThreadLocal原理解析以及應(yīng)用場景分析案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-09-09
spring boot集成mongodb的增刪改查的示例代碼
這篇文章主要介紹了spring boot集成mongodb的增刪改查的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
SpringBoot Actuator監(jiān)控的項目實踐
本文主要結(jié)合 Spring Boot Actuator,跟大家一起分享微服務(wù)Spring Boot Actuator 的常見用法,方便我們在日常中對我們的微服務(wù)進行監(jiān)控治理,感興趣的可以了解一下2024-01-01

