Java Calendar類常用示例_動力節(jié)點(diǎn)Java學(xué)院整理
Calendar類
從JDK1.1版本開始,在處理日期和時(shí)間時(shí),系統(tǒng)推薦使用Calendar類進(jìn)行實(shí)現(xiàn)。在設(shè)計(jì)上,Calendar類的功能要比Date類強(qiáng)大很多,而且在實(shí)現(xiàn)方式上也比Date類要復(fù)雜一些,下面就介紹一下Calendar類的使用。
Calendar類是一個(gè)抽象類,在實(shí)際使用時(shí)實(shí)現(xiàn)特定的子類的對象,創(chuàng)建對象的過程對程序員來說是透明的,只需要使用getInstance方法創(chuàng)建即可。
1、使用Calendar類代表當(dāng)前時(shí)間
Calendar c = Calendar.getInstance();
由于Calendar類是抽象類,且Calendar類的構(gòu)造方法是protected的,所以無法使用Calendar類的構(gòu)造方法來創(chuàng)建對象,API中提供了getInstance方法用來創(chuàng)建對象。
使用該方法獲得的Calendar對象就代表當(dāng)前的系統(tǒng)時(shí)間,由于Calendar類toString實(shí)現(xiàn)的沒有Date類那么直觀,所以直接輸出Calendar類的對象意義不大。
2、使用Calendar類代表指定的時(shí)間
Calendar c1 = Calendar.getInstance(); c1.set(2009, 3 - 1, 9);
使用Calendar類代表特定的時(shí)間,需要首先創(chuàng)建一個(gè)Calendar的對象,然后再設(shè)定該對象中的年月日參數(shù)來完成。
set方法的聲明為:
public final void set(int year,int month,int date)
以上示例代碼設(shè)置的時(shí)間為2009年3月9日,其參數(shù)的結(jié)構(gòu)和Date類不一樣。Calendar類中年份的數(shù)值直接書寫,月份的值為實(shí)際的月份值減1,日期的值就是實(shí)際的日期值。
如果只設(shè)定某個(gè)字段,例如日期的值,則可以使用如下set方法:
public void set(int field,int value)
在該方法中,參數(shù)field代表要設(shè)置的字段的類型,常見類型如下:
Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同
Calendar.HOUR——12小時(shí)制的小時(shí)數(shù)
Calendar.HOUR_OF_DAY——24小時(shí)制的小時(shí)數(shù)
Calendar.MINUTE——分鐘
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期幾
后續(xù)的參數(shù)value代表,設(shè)置成的值。例如:
c1.set(Calendar.DATE,10);
該代碼的作用是將c1對象代表的時(shí)間中日期設(shè)置為10號,其它所有的數(shù)值會被重新計(jì)算,例如星期幾以及對應(yīng)的相對時(shí)間數(shù)值等。
3、獲得Calendar類中的信息
Calendar c2 = Calendar.getInstance();
//年份
int year = c2.get(Calendar.YEAR);
//月份
int month = c2.get(Calendar.MONTH) + 1;
//日期
int date = c2.get(Calendar.DATE);
//小時(shí)
int hour = c2.get(Calendar.HOUR_OF_DAY);
//分鐘
int minute = c2.get(Calendar.MINUTE);
//秒
int second = c2.get(Calendar.SECOND);
//星期幾
int day = c2.get(Calendar.DAY_OF_WEEK);
System.out.println("年份:" + year);
System.out.println("月份:" + month);
System.out.println("日期:" + date);
System.out.println("小時(shí):" + hour);
System.out.println("分鐘:" + minute);
System.out.println("秒:" + second);
System.out.println("星期:" + day);
使用Calendar類中的get方法可以獲得Calendar對象中對應(yīng)的信息,get方法的聲明如下:
public int get(int field)
其中參數(shù)field代表需要獲得的字段的值,字段說明和上面的set方法保持一致。需要說明的是,獲得的月份為實(shí)際的月份值減1,獲得的星期的值和Date類不一樣。在Calendar類中,周日是1,周一是2,周二是3,依次類推。
4、其它方法說明
其實(shí)Calendar類中還提供了很多其它有用的方法,下面簡單的介紹幾個(gè)常見方法的使用。
a、add方法
public abstract void add(int field,int amount)
該方法的作用是在Calendar對象中的某個(gè)字段上增加或減少一定的數(shù)值,增加是amount的值為正,減少時(shí)amount的值為負(fù)。
例如在計(jì)算一下當(dāng)前時(shí)間100天以后的日期,代碼如下:
Calendar c3 = Calendar.getInstance(); c3.add(Calendar.DATE, 100); int year1 = c3.get(Calendar.YEAR); //月份 int month1 = c3.get(Calendar.MONTH) + 1; //日期 int date1 = c3.get(Calendar.DATE); System.out.println(year1 + "年" + month1 + "月" + date1 + "日");
這里add方法是指在c3對象的Calendar.DATE,也就是日期字段上增加100,類內(nèi)部會重新計(jì)算該日期對象中其它各字段的值,從而獲得100天以后的日期,例如程序的輸出結(jié)果可能為:
2009年6月17日
b、after方法
public boolean after(Object when)
該方法的作用是判斷當(dāng)前日期對象是否在when對象的后面,如果在when對象的后面則返回true,否則返回false。例如:
Calendar c4 = Calendar.getInstance(); c4.set(2009, 10 - 1, 10); Calendar c5 = Calendar.getInstance(); c5.set(2010, 10 - 1, 10); boolean b = c5.after(c4); System.out.println(b);
在該示例代碼中對象c4代表的時(shí)間是2009年10月10號,對象c5代表的時(shí)間是2010年10月10號,則對象c5代表的日期在c4代表的日期之后,所以after方法的返回值是true。
另外一個(gè)類似的方法是before,該方法是判斷當(dāng)前日期對象是否位于另外一個(gè)日期對象之前。
c、getTime方法
public final Date getTime(){
該方法的作用是將Calendar類型的對象轉(zhuǎn)換為對應(yīng)的Date類對象,兩者代表相同的時(shí)間點(diǎn)。
類似的方法是setTime,該方法的作用是將Date對象轉(zhuǎn)換為對應(yīng)的Calendar對象,該方法的聲明如下:
public final void setTime(Date date)
轉(zhuǎn)換的示例代碼如下:
Date d = new Date(); Calendar c6 = Calendar.getInstance(); //Calendar類型的對象轉(zhuǎn)換為Date對象 Date d1 = c6.getTime(); //Date類型的對象轉(zhuǎn)換為Calendar對象 Calendar c7 = Calendar.getInstance(); c7.setTime(d); }
5、Calendar對象和相對時(shí)間之間的互轉(zhuǎn)
Calendar c8 = Calendar.getInstance(); long t = 1252785271098L; //將Calendar對象轉(zhuǎn)換為相對時(shí)間 long t1 = c8.getTimeInMillis(); //將相對時(shí)間轉(zhuǎn)換為Calendar對象 Calendar c9 = Calendar.getInstance(); c9.setTimeInMillis(t1);
在轉(zhuǎn)換時(shí),使用Calendar類中的getTimeInMillis方法可以將Calendar對象轉(zhuǎn)換為相對時(shí)間。在將相對時(shí)間轉(zhuǎn)換為Calendar對象時(shí),首先創(chuàng)建一個(gè)Calendar對象,然后再使用Calendar類的setTimeInMillis方法設(shè)置時(shí)間即可。
以上所述是小編給大家介紹的Java Calendar類常用示例_動力節(jié)點(diǎn)Java學(xué)院整理,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Java中的日期和時(shí)間類以及Calendar類用法詳解
- Java中Date類和Calendar類的常用實(shí)例小結(jié)
- Java Calendar類的詳解及使用實(shí)例
- Java Calendar類的時(shí)間操作
- Java時(shí)間類Date類和Calendar類的使用詳解
- java時(shí)間 java.util.Calendar深入分析
- 利用Java中Calendar計(jì)算兩個(gè)日期之間的天數(shù)和周數(shù)
- Java中Calendar時(shí)間操作常用方法詳解
- Java中Date,Calendar,Timestamp的區(qū)別以及相互轉(zhuǎn)換與使用
- java中Calendar類用法實(shí)例詳解
相關(guān)文章
SpringBoot詳解如何整合Redis緩存驗(yàn)證碼
本文主要介紹了SpringBoot集成Redis實(shí)現(xiàn)驗(yàn)證碼的緩存簡單案例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
SpringBoot的@RestControllerAdvice作用詳解
這篇文章主要介紹了SpringBoot的@RestControllerAdvice作用詳解,@RestContrllerAdvice是一種組合注解,由@ControllerAdvice,@ResponseBody組成,本質(zhì)上就是@Component,需要的朋友可以參考下2024-01-01
解析SpringBoot?搭建基于?MinIO?的高性能存儲服務(wù)的問題
Minio是Apache?License?v2.0下發(fā)布的對象存儲服務(wù)器,使用MinIO構(gòu)建用于機(jī)器學(xué)習(xí),分析和應(yīng)用程序數(shù)據(jù)工作負(fù)載的高性能基礎(chǔ)架構(gòu)。這篇文章主要介紹了SpringBoot?搭建基于?MinIO?的高性能存儲服務(wù),需要的朋友可以參考下2022-03-03
java如何讀取某個(gè)文件夾中的全部文件(包括子文件夾)
這篇文章主要介紹了java如何讀取某個(gè)文件夾中的全部文件(包括子文件夾),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
配置IDEA中java項(xiàng)目配置swagger全過程
這篇文章主要介紹了配置IDEA中java項(xiàng)目配置swagger全過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Spring Boot自定義配置實(shí)現(xiàn)IDE自動提示功能
這篇文章主要介紹了Spring Boot自定義配置實(shí)現(xiàn)IDE自動提示功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08

