Java中Calendar類的一些常用方法小結(jié)
原理簡介
Java中提供了Calendar這個(gè)專門用于對(duì)日歷進(jìn)行操作的類,那么這個(gè)類有什么特殊的地方呢,首先我們來看Calendar的聲明:
public abstract class Calendar
extends Objectimplements Serializable, Cloneable, Comparable<Calendar>{}
該類被abstract所修飾,說明該類是一個(gè)抽象類,所以不能直接通過new該類對(duì)象來進(jìn)行實(shí)例化,為此Calendar類提供了兩種實(shí)例化方式:
方法1:通過創(chuàng)建其子類的對(duì)象(GregorianCalendar)的對(duì)象來進(jìn)行實(shí)例化
方法2:調(diào)用其靜態(tài)方法getInstance()方法來進(jìn)行實(shí)例化,以獲得此類型的一個(gè)通用的對(duì)象,getInstance方法返回一個(gè)Calendar對(duì)象(該對(duì)象為Calendar的子類所創(chuàng)建的對(duì)象),其日歷字段已由當(dāng)前日期和時(shí)間初始化(通常都選擇方法2來進(jìn)行實(shí)例化。)
Calendar nowTime = Calendar.getInstance();//使用默認(rèn)時(shí)區(qū)和語言環(huán)境獲得一個(gè)日歷
?Calendar 類常用方法的記錄:
獲取時(shí)間
// 使用默認(rèn)時(shí)區(qū)和語言環(huán)境獲得一個(gè)日歷
Calendar cal = Calendar.getInstance();
// 賦值時(shí)年月日時(shí)分秒常用的6個(gè)值,注意月份下標(biāo)從0開始,所以取月份要+1
System.out.println("年:" + cal.get(Calendar.YEAR));
System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("時(shí):" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));
今天是 2018 年 2 月 12 日,運(yùn)行結(jié)果:
年:2018
月:2
日:12
時(shí):15
分:57
秒:39
設(shè)置時(shí)間
月份的下標(biāo)從 0 開始,設(shè)置時(shí)同樣需要注意,比如我們?cè)O(shè)置為 2 月 15 日除夕當(dāng)晚的倒計(jì)時(shí)的最后一秒: 2018-02-15 23:59:59
可以這樣:
Calendar cal = Calendar.getInstance();
// 如果想設(shè)置為某個(gè)日期,可以一次設(shè)置年月日時(shí)分秒,由于月份下標(biāo)從0開始賦值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2018, 1, 15, 23, 59, 59);
或者也可以單個(gè)字段一一設(shè)置:
// 或者6個(gè)字段分別進(jìn)行設(shè)置,由于月份下標(biāo)從0開始賦值月份要-1
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());
打印的時(shí)間結(jié)果為:
? ? Thu Feb 15 23:59:59 CST 2018
時(shí)間計(jì)算
add方法:
比如在除夕當(dāng)晚最后一秒,add 一秒:
Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
cal.set(2018, 1, 15, 23, 59, 59);
cal.add(Calendar.SECOND, 1);
System.out.println(cal.getTime());
打印時(shí)間結(jié)果如下,日期會(huì)自動(dòng)進(jìn)入下一天:
? ? Thu Feb 15 23:59:59 CST 2018
? ? Fri Feb 16 00:00:00 CST 2018
再比如 1 月 31 號(hào)的時(shí)候,月份加一,會(huì)出現(xiàn)怎樣結(jié)果:
Calendar cal = Calendar.getInstance();
cal.set(2018, 1, 31, 8, 0, 0);
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, 1);
System.out.println(cal.getTime());
運(yùn)行結(jié)果:
? ? Wed Jan 31 08:00:00 CST 2018
? ? Wed Feb 28 08:00:00 CST 2018
總結(jié)
到此這篇關(guān)于Java中Calendar類的一些常用方法的文章就介紹到這了,更多相關(guān)Java?Calendar類常用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java堆空間爆滿導(dǎo)致宕機(jī)的問題分析及解決
團(tuán)隊(duì)有一個(gè)服務(wù),一直運(yùn)行的好好的,突然訪問異常了,先是請(qǐng)求超時(shí),然后直接無法訪問,本文將給大家介紹Java堆空間爆滿導(dǎo)致宕機(jī)的問題分析及解決,需要的朋友可以參考下2024-02-02
Spring遠(yuǎn)程加載配置的實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Spring遠(yuǎn)程加載配置的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-03-03
Java Socket聊天室編程(二)之利用socket實(shí)現(xiàn)單聊聊天室
這篇文章主要介紹了Java Socket聊天室編程(二)之利用socket實(shí)現(xiàn)單聊聊天室的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Java的字符讀寫類CharArrayReader和CharArrayWriter使用示例
這篇文章主要介紹了Java的字符讀寫類CharArrayReader和CharArrayWriter使用示例,兩個(gè)類分別繼承于Reader和Writer,需要的朋友可以參考下2016-06-06

