JAVA時(shí)間戳-Calendar類使用(包括set,get,add方法)
Calendar 類是一個(gè)抽象類,它為特定時(shí)間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。
瞬間可用毫秒值來表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
一、Calendar類
想要取得時(shí)間,首先使用Calendar的getInstance()取得一個(gè)Calendar的實(shí)例,例如:
Calendar c = Calendar.getInstance();
創(chuàng)建 Calendar 對(duì)象不能使用 new 關(guān)鍵字,因?yàn)?Calendar 類是一個(gè)抽象類,但是它提供了一個(gè) getInstance() 方法來獲得 Calendar類的對(duì)象。
getInstance() 方法返回一個(gè) Calendar 對(duì)象,其日歷字段已 由當(dāng)前日期和時(shí)間初始化。
Calendar 類中定義了許多常量,分別表示不同的意義。
- Calendar.YEAR:年份。
- Calendar.MONTH:月份。
- Calendar.DATE:日期。
- Calendar.DAY_OF_MONTH:日期,和上面的字段意義完全相同。
- Calendar.HOUR:12小時(shí)制的小時(shí)。
- Calendar.HOUR_OF_DAY:24 小時(shí)制的小時(shí)。
- Calendar.MINUTE:分鐘。 Calendar.SECOND:秒。
- Calendar.DAY_OF_WEEK:星期幾。
二、Calendar類的常用方法
2.1 get()方法
獲取值
cal.get(Calendar.YEAR);//年 cal.get(Calendar.MONTH) + 1;//月(Calendar在月份上的常數(shù)值從0開始的) cal.get(Calendar.DATE);//日 cal.get(Calendar.HOUR_OF_DAY);//時(shí) cal.get(Calendar.MINUTE);//分 cal.get(Calendar.SECOND);//秒 cal.get(Calendar.DAY_OF_WEEK);//星期(Locale.ENGLISH情況下,周日是1) cal.get(Calendar.DAY_OF_WEEK);//獲取當(dāng)前是一周中的第幾天(從0開始計(jì)算) cal.get(Calendar.DAY_OF_MONTH);//獲取當(dāng)前是一月的第幾天 cal.get(Calendar.DAY_OF_YEAR);//獲取當(dāng)前時(shí)一年中的第幾天
示例代碼如下:
public class CalandarTest { public static void main(String[] args) { Calendar cal=Calendar.getInstance(); //獲取當(dāng)前年 int year= cal.get(Calendar.YEAR); System.out.println(year); //獲取當(dāng)前月(從0開始計(jì)算) int month= cal.get(Calendar.MONTH); System.out.println(month); //獲取當(dāng)前日 int date= cal.get(Calendar.DATE); System.out.println(date); //獲取當(dāng)時(shí)小時(shí) int hour= cal.get(Calendar.HOUR); System.out.println(hour); //獲取當(dāng)前分鐘數(shù) int minute= cal.get(Calendar.MINUTE); System.out.println(minute); //獲取當(dāng)前秒數(shù) int second= cal.get(Calendar.SECOND); System.out.println(second); //獲取當(dāng)前是一周中的第幾天(從0開始計(jì)算) int wday= cal.get(Calendar.DAY_OF_WEEK); System.out.println(wday); //獲取當(dāng)前是一月的第幾天 int mday= cal.get(Calendar.DAY_OF_MONTH); System.out.println(mday); //獲取當(dāng)前時(shí)一年中的第幾天 int yday= cal.get(Calendar.DAY_OF_YEAR); System.out.println(yday); } }
2.2 set()方法
設(shè)置值(返回為日期對(duì)象)
cal.set(2023, 7, 15, 9, 44, 51);//年月日時(shí)分秒(月份0代表1月) cal.set(Calendar.YEAR, 2023);//年 cal.set(Calendar.MONTH, 7);//月(月份0代表1月) cal.set(Calendar.DATE, 11);//日 cal.set(Calendar.HOUR_OF_DAY, 15);//時(shí) cal.set(Calendar.MINUTE, 33);//分 cal.set(Calendar.SECOND, 32);//秒
示例代碼如下:
public class CalandarTest { public static void main(String[] args) { Calendar cal=Calendar.getInstance(); //設(shè)置當(dāng)前年 cal.set(Calendar.YEAR,2022); System.out.printf("%tY%n",cal); //設(shè)置當(dāng)前月(從0開始計(jì)算) cal.set(Calendar.MONTH,5); System.out.printf("%tm%n",cal); //設(shè)置當(dāng)前日 cal.set(Calendar.DATE,5); System.out.printf("%td%n",cal); //設(shè)置當(dāng)時(shí)小時(shí) cal.set(Calendar.HOUR,14); System.out.printf("%tl%n",cal); //設(shè)置當(dāng)前分鐘數(shù) cal.set(Calendar.MINUTE,50); System.out.printf("%tM%n",cal); //設(shè)置當(dāng)前秒數(shù) cal.set(Calendar.SECOND,12); System.out.printf("%tS%n",cal); } }
輸出結(jié)果如下:
2.3 add()方法
運(yùn)算值(在獲取的當(dāng)前時(shí)間進(jìn)行運(yùn)算,返回值為日期對(duì)象)
cal.add(Calendar.YEAR, 1);//年 cal.add(Calendar.MONTH, 1);//月 cal.add(Calendar.DATE, 1);//日 cal.add(Calendar.HOUR_OF_DAY, -1);//時(shí) cal.add(Calendar.MINUTE, 1);//分 cal.add(Calendar.SECOND, 1);//秒 cal.add(Calendar.DATE, 7);//周
示例代碼如下:
public class CalandarTest { public static void main(String[] args) { Calendar cal=Calendar.getInstance(); //以當(dāng)前年計(jì)算 cal.add(Calendar.YEAR,2022); System.out.printf("%tY%n",cal); //以當(dāng)前月(月份不從0開始計(jì)算)計(jì)算 cal.add(Calendar.MONTH,5); System.out.printf("%tm%n",cal); //以當(dāng)前日計(jì)算 cal.add(Calendar.DATE,-5); System.out.printf("%td%n",cal); //以當(dāng)時(shí)小時(shí)小時(shí) cal.add(Calendar.HOUR_OF_DAY,14); System.out.printf("%tl%n",cal); //以當(dāng)前分鐘數(shù)計(jì)算 cal.add(Calendar.MINUTE,-50); System.out.printf("%tM%n",cal); //以當(dāng)前秒數(shù)計(jì)算 cal.add(Calendar.SECOND,12); System.out.printf("%tS%n",cal); } }
輸出結(jié)果如下:
三、格式化日期輸出
Calendar類返回的時(shí)間類型為對(duì)象類型,為了方便輸出展示,在輸出時(shí)可以將日期格式化。
轉(zhuǎn)換符 | 說明 |
%tH | 小時(shí)(00-23) |
%tL | 小時(shí)(01-12) |
%tk | 小時(shí)(0-23) |
%tM | 分鐘(00-29) |
%tS | 秒(00-59) |
%tL | 毫秒(000-999) |
%tN | 微秒(000000000-999999999) |
%tp | 當(dāng)前語言環(huán)境下的上午/下午 |
%ts | 從1970-01-01 00:00:00到現(xiàn)在的秒 |
%tQ | 從1970-01-01 00:00:00到現(xiàn)在的毫秒 |
%tF | 年-月-日 |
%tT | 時(shí)-分-秒 |
%tD | 月/日/年 |
%tc | 全部時(shí)間日期 |
%tR | 時(shí)分 |
%tr | 時(shí)分秒PM |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java服務(wù)限流算法的6種實(shí)現(xiàn)
服務(wù)限流是指通過控制請(qǐng)求的速率或次數(shù)來達(dá)到保護(hù)服務(wù)的目的,本文主要介紹了Java服務(wù)限流算法的6種實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-05-05高內(nèi)聚低耦合原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
耦合度就是某模塊(類)與其它模塊(類)之間的關(guān)聯(lián)、感知和依賴的程度,是衡量代碼獨(dú)立性的一個(gè)指標(biāo),也是軟件工程設(shè)計(jì)及編碼質(zhì)量評(píng)價(jià)的一個(gè)標(biāo)準(zhǔn)2017-08-08Java中有界隊(duì)列的飽和策略(reject policy)原理解析
這篇文章主要介紹了Java中有界隊(duì)列的飽和策略(reject policy)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04java自定義ClassLoader加載指定的class文件操作
這篇文章主要介紹了java自定義ClassLoader加載指定的class文件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02