Hi i,m JinXiang
⭐ 前言 ⭐
本篇文章主要介紹Calendar日曆型別的幾種常見方法以及部分理論知識
?歡迎點贊 ? 收藏 ⭐留言評論 ?私信必回喲?
?博主收將持續更新學習記錄獲,友友們有任何問題可以在評論區留言
⭐什麼是Calendar日曆型別?
Calendar類是一個抽象類,它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日曆欄位之間的轉換提供了一些方法,併為操作日曆欄位(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來表示,它是距曆元(即格林威治標準時間 1970 年 1 月 1 日的 00:00:00.000,格里高利曆)的偏移量。Calendar英文含義為日曆、掛曆、日程表。
⭐為什麼要用Calendar日曆型別?
1、Calendar日曆,主要用來處理時間,例如獲取事件的某個部分,改變時間的某個部分,對時間進行加減操作等
2、Calendar日曆與Date的區別,Date主要是獲取一個日期的,裡面也有很多操作日期的方法,但是早已經過期了,不再使用。所以操作日期主要使用Calendar
⭐使用Calendar日曆型別
Calendar 是一個抽象類, 無法透過直接例項化得到物件。因此, Calendar 提供了一個方法 getInstance,來獲得一個Calendar物件, 得到的 Calendar 由當前時間初始化。
與其他區域設定敏感的類一樣, Calendar提供了一種類方法“getInstance”,用於獲取此型別的一般有用的物件。 Calendar的“getInstance”方法返回一個Calendar物件,其日曆欄位已使用當前日期和時間進行初始化:
Calendar c1 = Calendar.getInstance();
使用Calendar獲得年月日時分秒:
// 獲得年份 int year = c1.get(Calendar.YEAR); // 獲得月份 int month = c1.get(Calendar.MONTH) + 1; // 獲得日期 int date = c1.get(Calendar.DATE); // 獲得小時 int hour = c1.get(Calendar.HOUR_OF_DAY); // 獲得分鐘 int minute = c1.get(Calendar.MINUTE); // 獲得秒 int second = c1.get(Calendar.SECOND); // 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推) int day = c1.get(Calendar.DAY_OF_WEEK);
Calendar物件可以產生實現特定語言和日曆風格的日期時間格式化所需的所有日曆欄位值(例如日語 - 公曆,日語 - 繁體)。 Calendar定義某些日曆欄位返回的值的範圍及其含義。 例如,日曆系統第一個月的值為MONTH == JANUARY為所有日曆。 其他值由具體的子類定義,如ERA 。 有關詳細資訊,請參閱部落格 jdk_api_1.8-JAVA中文版API手冊(免費版)-CSDN部落格 中提供的APL工具,檢視各個實體文件和子類文件進行深入瞭解!
Calendar日曆操作
-
日曆欄位可以用三種方法來改變
set()
,add()
和roll()
。 -
此外,與
set()
不同,add()是
強制立即重新計算日曆的毫秒數和所有欄位。
1、add()
1)要在當前年月日上新增一天,可以使用Calendar類的add方法,並將時間單元設定為Calendar.DAY_OF_MONTH,示例如下:
import java.util.Calendar; public class Calendar1 { @Test public void Test(){ //Calendar日曆型別 Calendar calendar = Calendar.getInstance(); System.out.println("當前日期是:" + calendar.getTime()); // 在當前日期上增加一天 calendar.add(Calendar.DAY_OF_MONTH, 1); System.out.println("增加一天後的日期是:" + calendar.getTime()); } }
2)在日期或時間上增加或減少指定的時間單元:
calendar.add(Calendar.YEAR, 1); // 增加1年 calendar.add(Calendar.MONTH, -2); // 減少2個月 calendar.add(Calendar.DAY_OF_MONTH, 7); // 增加7天
2、set()
設定Calendar表示的日期和時間:
calendar.set(Calendar.YEAR, 2022); calendar.set(Calendar.MONTH, Calendar.JANUARY); // 月份從0開始計數,0表示一月 calendar.set(Calendar.DAY_OF_MONTH, 15);
3、roll()
roll()函式處理,只會對相應的欄位進行處理,不會智慧的對其它欄位也進行邏輯上的改變。
add()函式會在邏輯上改變其它欄位,使結果正確。
取某個日曆之前的某個月
calendar.set(2002, 0, 12); //代表2002年1月12日 calendar.roll(Calendar.MONTH, -1); //這樣就將日期設定成了2002年12月12日。 System.out.println(calendar.getTime().toString());
Calendar與Date之間的轉換
1)將Calendar轉換為Date物件:
Date date = calendar.getTime();
2)將Date物件轉換為Calendar:
Date date = new Date(); calendar.setTime(date);
總結不易,希望uu們不要吝嗇親愛的?喲(^U^)ノ~YO!!如有問題,歡迎評論區批評指正?