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 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告