Java中的GregorianCalendar类

GregorianCalendar是Calendar类的具体实现,该类实现您熟悉的普通Gregorian日历。在本教程中我们没有讨论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 minutes)
构造一个GregorianCalendar,并为给定日期和时间的默认时区设置默认语言环境。

4
GregorianCalendar(int year,int month,int date,int hour,int minutes,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 voidcomputeFields()
将UTC(以毫秒为单位)转换为时间字段值。

3
protected voidcomputeTime()
重写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
DategetGregorianChange()
获取公历更改日期。

10
int getLeastMaximum(int field)
如果给定字段,则返回给定字段的最低最大值。

11
int getMaximum(int field)
返回给定字段的最大值。

12
日期getTime()
获取此日历的当前时间。

13
longgetTimeInMillis()
获取此日历的当前时间为long。

14
TimeZonegetTimeZone()
获取时区。

15
int getMinimum(int field)
返回给定字段的最小值。

16
inthashCode()
覆盖hashCode。

17
boolean isLeapYear(int year)
确定给定年份是否为a年。

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年,int月,int日期,int小时,int分钟)
设置年,月,日期,小时和分钟字段的值。

22
void set(int年,int月,int日期,int小时,int分钟,int秒)
设置年,月,日期,小时,分钟和秒字段的值。

23
setGregorianChange(Date date)
设置GregorianCalendar更改日期。

24
setTime(Date date)
使用给定的Date设置此日历的当前时间。

25
setTimeInMillis(long millis)
从给定的long值设置此日历的当前时间。

26
setTimeZone(TimeZone value)
使用给定的时区值设置时区。

27
字符串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;
      //创建一个初始化的公历
      //当前日期和时间在
      //默认语言环境和时区。

      GregorianCalendar gcalendar = new GregorianCalendar();

      //显示当前时间和日期信息。
      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));

      //测试当前年份是否为a年
      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