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