Java中Calendar類的一些常用方法小結(jié)
原理簡介
Java中提供了Calendar這個專門用于對日歷進行操作的類,那么這個類有什么特殊的地方呢,首先我們來看Calendar的聲明:
public abstract class Calendar
extends Objectimplements Serializable, Cloneable, Comparable<Calendar>{}
該類被abstract所修飾,說明該類是一個抽象類,所以不能直接通過new該類對象來進行實例化,為此Calendar類提供了兩種實例化方式:
方法1:通過創(chuàng)建其子類的對象(GregorianCalendar)的對象來進行實例化
方法2:調(diào)用其靜態(tài)方法getInstance()方法來進行實例化,以獲得此類型的一個通用的對象,getInstance方法返回一個Calendar對象(該對象為Calendar的子類所創(chuàng)建的對象),其日歷字段已由當前日期和時間初始化(通常都選擇方法2來進行實例化。)
Calendar nowTime = Calendar.getInstance();//使用默認時區(qū)和語言環(huán)境獲得一個日歷
?Calendar 類常用方法的記錄:
獲取時間
// 使用默認時區(qū)和語言環(huán)境獲得一個日歷
Calendar cal = Calendar.getInstance();
// 賦值時年月日時分秒常用的6個值,注意月份下標從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("時:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));
今天是 2018 年 2 月 12 日,運行結(jié)果:
年:2018
月:2
日:12
時:15
分:57
秒:39
設(shè)置時間
月份的下標從 0 開始,設(shè)置時同樣需要注意,比如我們設(shè)置為 2 月 15 日除夕當晚的倒計時的最后一秒: 2018-02-15 23:59:59
可以這樣:
Calendar cal = Calendar.getInstance();
// 如果想設(shè)置為某個日期,可以一次設(shè)置年月日時分秒,由于月份下標從0開始賦值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2018, 1, 15, 23, 59, 59);
或者也可以單個字段一一設(shè)置:
// 或者6個字段分別進行設(shè)置,由于月份下標從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());
打印的時間結(jié)果為:
? ? Thu Feb 15 23:59:59 CST 2018
時間計算
add方法:
比如在除夕當晚最后一秒,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());
打印時間結(jié)果如下,日期會自動進入下一天:
? ? Thu Feb 15 23:59:59 CST 2018
? ? Fri Feb 16 00:00:00 CST 2018
再比如 1 月 31 號的時候,月份加一,會出現(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());
運行結(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring的請求映射handlerMapping以及原理詳解
這篇文章主要介紹了Spring的請求映射handlerMapping以及原理詳解,我們每次發(fā)請求,它到底是怎么找到我們哪個方法來去處理這個請求,因為我們知道所有的請求過來都會來到DispatcherServlet,springboot底層還是使用的是springMVC,需要的朋友可以參考下2023-08-08
關(guān)于Spring自定義XML schema 擴展的問題(Spring面試高頻題)
今天給大家分享一道spring高頻率面試題關(guān)于Spring自定義XML schema 擴展的問題,今天以spring整合dubbo的實例給大家詳細講解下,感興趣的朋友跟隨小編一起看看吧2021-05-05
教你Java中的Lock鎖底層AQS到底是如何實現(xiàn)的
本文是基于ReentrantLock來講解,ReentrantLock加鎖只是對AQS的api的調(diào)用,底層的鎖的狀態(tài)(state)和其他線程等待(Node雙向鏈表)的過程其實是由AQS來維護的,對Java?Lock鎖AQS實現(xiàn)過程感興趣的朋友一起看看吧2022-05-05
IDEA提示內(nèi)存不足 low memory的完美解決方法(親測好用)
這篇文章主要介紹了IDEA提示內(nèi)存不足 low memory的完美解決方法(親測好用),這里以IDEA2022版本為例,在IDE中 幫助(help)–>change memory setting(改變內(nèi)存設(shè)置),具體設(shè)置辦法文中給大家詳細講解,需要的朋友可以參考下2023-01-01

