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)
設定 year、month 和 date 欄位的值。

21
void set(int year, int month, int date, int hour, int minute)
設定 year、month、date、hour 和 minute 欄位的值。

22
void set(int year, int month, int date, int hour, int minute, int second)
設定 year、month、date、hour、minute 和 second 欄位的值。

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

24
void setTime(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-06-19

瀏覽量 185 次

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.