JAVA時(shí)間戳-Calendar類(lèi)使用(包括set,get,add方法)
Calendar 類(lèi)是一個(gè)抽象類(lèi),它為特定時(shí)間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。
瞬間可用毫秒值來(lái)表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
一、Calendar類(lèi)
想要取得時(shí)間,首先使用Calendar的getInstance()取得一個(gè)Calendar的實(shí)例,例如:
Calendar c = Calendar.getInstance();
創(chuàng)建 Calendar 對(duì)象不能使用 new 關(guān)鍵字,因?yàn)?Calendar 類(lèi)是一個(gè)抽象類(lèi),但是它提供了一個(gè) getInstance() 方法來(lái)獲得 Calendar類(lèi)的對(duì)象。
getInstance() 方法返回一個(gè) Calendar 對(duì)象,其日歷字段已 由當(dāng)前日期和時(shí)間初始化。
Calendar 類(lèi)中定義了許多常量,分別表示不同的意義。
- 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類(lèi)的常用方法
2.1 get()方法
獲取值
cal.get(Calendar.YEAR);//年 cal.get(Calendar.MONTH) + 1;//月(Calendar在月份上的常數(shù)值從0開(kāi)始的) 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開(kāi)始計(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開(kāi)始計(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開(kāi)始計(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開(kāi)始計(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開(kāi)始計(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類(lèi)返回的時(shí)間類(lèi)型為對(duì)象類(lèi)型,為了方便輸出展示,在輸出時(shí)可以將日期格式化。
| 轉(zhuǎn)換符 | 說(shuō)明 |
| %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)前語(yǔ)言環(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)文章
關(guān)于Java8 parallelStream并發(fā)安全的深入講解
這篇文章主要給大家介紹了關(guān)于Java8 parallelStream并發(fā)安全的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10
詳解基于MVC的數(shù)據(jù)查詢(xún)模塊進(jìn)行模糊查詢(xún)
這篇文章主要介紹了Java基于MVC的數(shù)據(jù)查詢(xún)模塊進(jìn)行模糊查詢(xún),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
java中常用的阻塞隊(duì)列與非阻塞隊(duì)列詳解
這篇文章主要介紹了java中常用的阻塞隊(duì)列與非阻塞隊(duì)列用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
基于JDBC訪問(wèn)MySql公共方法實(shí)例解析
這篇文章主要介紹了基于JDBC訪問(wèn)MySql公共方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java讀取properties配置文件的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Java讀取properties配置文件的實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
IDEA創(chuàng)建maven項(xiàng)目時(shí)在tomcat運(yùn)行瀏覽器404的問(wèn)題
這篇文章主要介紹了IDEA創(chuàng)建maven項(xiàng)目時(shí)在tomcat運(yùn)行瀏覽器404的問(wèn)題及解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Spring中的REST分頁(yè)的實(shí)現(xiàn)代碼
本文將介紹在REST API中實(shí)現(xiàn)分頁(yè)的基礎(chǔ)知識(shí)。我們將專(zhuān)注于使用Spring Boot和Spring Data 在Spring MVC中構(gòu)建REST分頁(yè),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

