Java中的GregorianCalendar類


GregorianCalendar是Calendar類的一個具體實現,它實現了您熟悉的標準格里高利曆。本教程未討論Calendar類,您可以查閱標準Java文件。

Calendar的getInstance()方法返回一個GregorianCalendar物件,該物件使用預設區域設定和時區中的當前日期和時間進行初始化。GregorianCalendar定義了兩個欄位:AD和BC。它們代表格里高利曆定義的兩個紀元。

GregorianCalendar物件還有幾個建構函式:

序號
建構函式及描述
1
GregorianCalendar()
使用預設時區和預設區域設定中的當前時間構造一個預設的GregorianCalendar。

2
GregorianCalendar(int year, int month, int date)
使用預設時區和預設區域設定構造一個GregorianCalendar,並設定指定的日期。

3
GregorianCalendar(int year, int month, int date, int hour, int minute)
使用預設時區和預設區域設定構造一個GregorianCalendar,並設定指定的日期和時間。

4
GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
使用預設時區和預設區域設定構造一個GregorianCalendar,並設定指定的日期和時間。

5
GregorianCalendar(Locale aLocale)
使用預設時區和給定的區域設定構造一個基於當前時間的GregorianCalendar。

6
GregorianCalendar(TimeZone zone)
使用給定的時區和預設區域設定構造一個基於當前時間的GregorianCalendar。

7
GregorianCalendar(TimeZone zone, Locale aLocale)
使用給定的時區和給定的區域設定構造一個基於當前時間的GregorianCalendar。

以下是GregorianCalendar類提供的一些有用的支援方法:

序號
方法及描述
1
void add(int field, int amount)
根據日曆規則,將指定的時間量(帶符號)新增到給定的時間欄位。

2
protected void computeFields()
將UTC毫秒轉換為時間欄位值。

3
protected void computeTime()
重寫Calendar,將時間欄位值轉換為UTC毫秒。

4
boolean equals(Object obj)
將此GregorianCalendar與物件引用進行比較。

5
int get(int field)
獲取給定時間欄位的值。

6
int getActualMaximum(int field)
返回給定當前日期下,此欄位可能具有的最大值。

7
int getActualMinimum(int field)
返回給定當前日期下,此欄位可能具有的最小值。

8
int getGreatestMinimum(int field)
如果變化,則返回給定欄位的最高最小值。

9
Date getGregorianChange()
獲取格里高利曆更改日期。

10
int getLeastMaximum(int field)
如果變化,則返回給定欄位的最低最大值。

11
int getMaximum(int field)
返回給定欄位的最大值。

12
Date getTime()
獲取此日曆的當前時間。

13
long getTimeInMillis()
以長整型獲取此日曆的當前時間。

14
TimeZone getTimeZone()
獲取時區。

15
int getMinimum(int field)
返回給定欄位的最小值。

16
int hashCode()
重寫hashCode。

17
boolean isLeapYear(int year)
確定給定年份是否是閏年。

18
void roll(int field, boolean up)
在給定的時間欄位上新增或減去(向上/向下)一個時間單位,而不更改較大的欄位。

19
void set(int field, int value)
使用給定值設定時間欄位。

20
void set(int year, int month, int date)
設定年份、月份和日期欄位的值。

21
void set(int year, int month, int date, int hour, int minute)
設定年份、月份、日期、小時和分鐘欄位的值。

22
void set(int year, int month, int date, int hour, int minute, int second)
設定年份、月份、日期、小時、分鐘和秒欄位的值。

23
void setGregorianChange(Date date)
設定格里高利曆更改日期。

24
void setTime(Date date)
使用給定的Date設定此日曆的當前時間。

25
void setTimeInMillis(long millis)
使用給定的長整型值設定此日曆的當前時間。

26
void setTimeZone(TimeZone value)
使用給定的時區值設定時區。

27
String toString()
返回此日曆的字串表示形式。

示例

線上演示

import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.

      GregorianCalendar gcalendar = new GregorianCalendar();

      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

這將產生以下結果:

輸出

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

更新於:2020年6月19日

185 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告