Java 日曆類



介紹

Java Calendar 類是一個抽象類,它提供了一些方法用於在特定時間點和一組日曆欄位(如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等)之間進行轉換,以及操作日曆欄位,例如獲取下一週的日期。以下關於 Calendar 的要點:

  • 此類還提供其他欄位和方法,用於在包外實現具體的日曆系統。

  • Calendar 定義了某些日曆欄位返回的值範圍。

類宣告

以下是 java.util.Calendar 類的宣告:

public abstract class Calendar
   extends Object
   implements Serializable, Cloneable, Comparable<Calendar>

欄位

以下是 java.util.Calendar 類的欄位:

  • static int ALL_STYLES − 這是 getDisplayNames 指示所有樣式的名稱(例如“January”和“Jan”)的樣式說明符。

  • static int AM − 這是 AM_PM 欄位的值,指示從午夜到中午之前的時間段。

  • static int AM_PM − 這是 get 和 set 指示 HOUR 是在中午之前還是之後欄位編號。

  • static int APRIL − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第四個月。

  • protected boolean areFieldsSet − 如果 fields[] 與當前設定的時間同步,則為 true。

  • static int AUGUST − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第八個月。

  • static int DATE − 這是 get 和 set 指示一個月中的日期欄位編號。

  • static int DAY_OF_MONTH − 這是 get 和 set 指示一個月中的日期欄位編號。

  • static int DAY_OF_WEEK − 這是 get 和 set 指示一週中的日期欄位編號。

  • static int DAY_OF_WEEK_IN_MONTH − 這是 get 和 set 指示當前月中星期幾的序數字段編號。

  • static int DAY_OF_YEAR − 這是 get 和 set 指示當前年中第幾天欄位編號。

  • static int DECEMBER − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第十二個月。

  • static int DST_OFFSET − 這是 get 和 set 指示夏令時偏移量(以毫秒為單位)欄位編號。

  • static int ERA − 這是 get 和 set 指示紀元(例如,儒略曆中的公元或公元前)欄位編號。

  • static int FEBRUARY − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第二個月。

  • static int FIELD_COUNT − 這是 get 和 set 識別的不同欄位的數量。

  • protected int[] fields − 這是此日曆當前設定時間的日曆欄位值。

  • static int FRIDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期五。

  • static int HOUR − 這是 get 和 set 指示上午或下午的小時欄位編號。

  • static int HOUR_OF_DAY − 這是 get 和 set 指示一天中的小時欄位編號。

  • protected boolean[] isSet − 這些是標誌,指示日曆的指定日曆欄位是否已設定。

  • protected boolean isTimeSet − 如果時間值有效,則為 true。

  • static int JANUARY − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第一個月。

  • static int JULY − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第七個月。

  • static int JUNE − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第六個月。

  • static int LONG − 這是 getDisplayName 和 getDisplayNames 指示長名稱(例如“January”)的樣式說明符。

  • static int MARCH − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第三個月。

  • static int MAY − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第五個月。

  • static int MILLISECOND − 這是 get 和 set 指示秒內毫秒欄位編號。

  • static int MINUTE − 這是 get 和 set 指示小時內的分鐘欄位編號。

  • static int MONDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期一。

  • static int MONTH − 這是 get 和 set 指示月份欄位編號。

  • static int NOVEMBER − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第十一個月。

  • static int OCTOBER − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第十個月。

  • static int PM − 這是 AM_PM 欄位的值,指示從中午到午夜之前的時間段。

  • static int SATURDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期六。

  • static int SECOND − 這是 get 和 set 指示分鐘內的秒欄位編號。

  • static int SEPTEMBER − 這是 MONTH 欄位的值,指示公曆和儒略曆中一年中的第九個月。

  • static int SHORT − 這是 getDisplayName 和 getDisplayNames 指示短名稱(例如“Jan”)的樣式說明符。

  • static int SUNDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期日。

  • static int THURSDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期四。

  • protected long time − 這是此日曆的當前設定時間,以 1970 年 1 月 1 日 0:00:00 GMT 之後的毫秒數表示。

  • static int TUESDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期二。

  • static int UNDECIMBER − 這是 MONTH 欄位的值,指示一年中的第十三個月。

  • static int WEDNESDAY − 這是 DAY_OF_WEEK 欄位的值,指示星期三。

  • static int WEEK_OF_MONTH − 這是 get 和 set 指示當前月中星期數字段編號。

  • static int WEEK_OF_YEAR − 這是 get 和 set 指示當前年中星期數字段編號。

  • static int YEAR − 這是 get 和 set 指示年份欄位編號。

  • static int ZONE_OFFSET − 這是 get 和 set 指示與 GMT 的原始偏移量(以毫秒為單位)欄位編號。

類建構函式

序號 建構函式及描述
1

protected Calendar()

此建構函式使用預設時區和區域設定構造一個日曆。

2

protected Calendar(TimeZone zone, Locale aLocale)

此建構函式使用指定的時區和區域設定構造一個日曆。

類方法

序號 方法及描述
1 abstract void add(int field, int amount)

此方法根據日曆的規則,將指定的時間量加到或減去給定的日曆欄位。

2 boolean after(Object when)

此方法返回此 Calendar 是否表示一個時間在指定 Object 表示的時間之後。

3 boolean before(Object when)

此方法返回此 Calendar 是否表示一個時間在指定 Object 表示的時間之前。

4 void clear()

此方法將此 Calendar 的所有日曆欄位值和時間值(距紀元的毫秒偏移量)設定為未定義。

6 Object clone()

此方法建立並返回此物件的副本。

7 int compareTo(Calendar anotherCalendar)

此方法比較兩個 Calendar 物件表示的時間值(距紀元的毫秒偏移量)。

8 boolean equals(Object obj)

此方法將此 Calendar 與指定的 Object 進行比較。

9 int get(int field)

此方法返回給定日曆欄位的值。

10 int getActualMaximum(int field)

此方法返回指定日曆欄位在給定此 Calendar 的時間值的情況下可能具有的最大值。

11 int getActualMinimum(int field)

此方法返回指定日曆欄位在給定此 Calendar 的時間值的情況下可能具有的最小值。

12 static Set<String> getAvailableCalendarTypes()

此方法返回一個不可修改的 Set,其中包含執行時環境中 Calendar 支援的所有日曆型別。

13 static Locale[] getAvailableLocales()

此方法返回一個數組,其中包含此類的 getInstance 方法可以返回本地化例項的所有區域設定。

14 String getCalendarType()

此方法返回此 Calendar 的日曆型別。

15 String getDisplayName(int field, int style, Locale locale)

此方法返回給定樣式和區域設定中日曆欄位值的字串表示形式。

16 Map<String,Integer> getDisplayNames(int field, int style, Locale locale)

此方法返回一個 Map,其中包含給定樣式和區域設定中日曆欄位的所有名稱及其對應的欄位值。

17 int getFirstDayOfWeek()

此方法獲取一週的第一天是什麼;例如,在美國為星期日,在法國為星期一。

18 abstract int getGreatestMinimum(int field)

此方法返回此 Calendar 例項的給定日曆欄位的最高最小值。

19 static Calendar getInstance()

此方法使用預設時區和區域設定獲取一個日曆。

20 abstract int getLeastMaximum(int field)

此方法返回此 Calendar 例項的給定日曆欄位的最低最大值。

21 abstract int getMaximum(int field)

此方法返回此 Calendar 例項的給定日曆欄位的最大值。

22 int getMinimalDaysInFirstWeek()

此方法獲取一年中第一週所需的最小天數;例如,如果第一週定義為包含一年中第一個月的第一天的那一週,則此方法返回 1。

23 abstract int getMinimum(int field)

此方法返回此 Calendar 例項的給定日曆欄位的最小值。

24 Date getTime()

此方法返回一個 Date 物件,該物件表示此 Calendar 的時間值(自紀元以來的毫秒偏移量)。

25 long getTimeInMillis()

此方法以毫秒為單位返回此 Calendar 的時間值。

26 TimeZone getTimeZone()

此方法獲取時區。

27 int hashCode()

此方法返回此日曆的雜湊碼。

28 boolean isLenient()

此方法指示日期/時間解釋是否應寬鬆。

29 boolean isSet(int field)

此方法確定給定的日曆欄位是否已設定值,包括由 get 方法呼叫觸發的內部欄位計算所設定的值的情況。

30 abstract void roll(int field, boolean up)

此方法在給定的時間欄位上新增或減去(向上/向下)一個時間單位,而不更改更大的欄位。

31 void set(int field, int value)

此方法將給定的日曆欄位設定為給定的值。

32 void setFirstDayOfWeek(int value)

此方法設定一週的第一天是什麼;例如,在美國為星期日,在法國為星期一。

33 void setLenient(boolean lenient)

此方法指定日期/時間解釋是否應寬鬆。

34 void setMinimalDaysInFirstWeek(int value)

此方法設定一年中第一週所需的最小天數;例如,如果第一週定義為包含一年中第一個月的第一天的那一週,則使用 value 呼叫此方法。

35 void setTime(Date date)

此方法使用給定的 Date 設定此 Calendar 的時間。

36 void setTimeInMillis(long millis)

此方法根據給定的 long 值設定此 Calendar 的當前時間。

37 void setTimeZone(TimeZone value)

此方法使用給定的時區值設定時區。

38 void setWeekDate​(int weekYear, int weekOfYear, int dayOfWeek)

此方法使用給定的日期說明符(週年的年份、一年中的週數和一週中的天數)設定此 Calendar 的日期。

39 Instant toInstant

此方法將此物件轉換為 Instant。

40 String toString()

此方法返回此日曆的字串表示形式。

繼承的方法

此類繼承自以下類:-

  • java.util.Object

檢查日期是否在給定日期之後示例

以下示例顯示了 Java Calendar after() 方法的用法。我們正在建立當前日期的兩個 Calendar 例項。其中一個日曆被修改為將來日期,然後使用 after() 方法進行比較。

package com.tutorialspoint;

import java.util.Calendar;
import java.util.Date;

public class CalendarDemo {
   public static void main(String[] args) {
   
      // create calendar objects.
      Calendar cal = Calendar.getInstance();
      Calendar future = Calendar.getInstance();

      // print the current date
      System.out.println("Current date: " + cal.getTime());

      // change year in future calendar
      future.set(Calendar.YEAR, 2025);
      System.out.println("Year is " + future.get(Calendar.YEAR));

      // check if calendar date is after current date
      Date time = future.getTime();
      
      if (future.after(cal)) {
         System.out.println("Date " + time + " is after current date.");
      }
   }
}

讓我們編譯並執行上述程式,這將產生以下結果:-

Current date: Fri Sep 23 14:35:06 IST 2022
Year is 2025
Date Tue Sep 23 14:35:06 IST 2025 is after current date.
廣告