GregorianCalendar类常用方法,属性
摘要
class GregorianCalendar
继承关系
java.lang.Object
java.util.Calendar
java.util.GregorianCalendar
所有的父接口
Serializable, Cloneable, Comparable
public class GregorianCalendar extends Calendar
GregorianCalendar时Calendar的一个直接子类,并提供了世界上大多数国家使用的标准日历系统。
构造方法
|
构造及其描述 |
|
GregorianCalendar() |
|
GregorianCalendar(int year, int month, int dayOfMonth) |
|
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute) |
|
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second) |
|
GregorianCalendar(Locale aLocale) |
| GregorianCalendar(TimeZone zone)
构造一个指定时区的当前时间的日历对象 |
| GregorianCalendar(TimeZone zone, Local aLocale)
根据指定时区的当前时间,使用给定的区域构造一个日历对象 |
常用方法
| 返回值 | 方法名及描述 |
|
void |
add(int field, int amount) |
|
void |
roll(int field, boolean up) |
|
void |
roll(int field, int amount) |
|
int |
getActualMinimum(int field) |
|
int |
getActualMaximum(int field) |
|
int |
getGreatestMinimum(int field) |
|
int |
getLeastMaximum(int field) |
|
int |
getMinimum(int field) |
|
int |
getMaximum(int field) |
|
TimeZone |
getTimeZone() |
|
void |
setTimeZone(TimeZone zone) |
|
boolean |
isLeapYear(int year) |
|
void |
setGregorianChange(Date date) |
|
void |
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek)
给当前日历对象设置weekYear年的weekOfYear周,第dayOfWeek天 |
示例
构造方法
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); TimeZone t=TimeZone.getTimeZone("GMT"); //默认时区,语言环境构造 GregorianCalendar c1=new GregorianCalendar(); System.out.printf("默认时区构造:%s;(当前时间)",format.format(c1.getTime())); System.out.println(); //指定日期构造 GregorianCalendar c2=new GregorianCalendar(2023,1,1); System.out.printf("指定日期构造:%s;//参数是1,但是这里是2,这一点需要注意",format.format(c2.getTime())); System.out.println(); //指定日期,时间构造 GregorianCalendar c3=new GregorianCalendar(2023,1,1,11,11,11); System.out.printf("指定日期,时间构造:%s;//参数是1,但是这里是2,这一点需要注意",format.format(c3.getTime())); System.out.println(); //指定语言环境构造 GregorianCalendar c4=new GregorianCalendar(Locale.CHINESE); System.out.printf("指定语言环境的默认时区构造:%s;",format.format(c4.getTime())); System.out.println(); //指定时区构造 GregorianCalendar c5=new GregorianCalendar(t); System.out.printf("指定时区构造:%s;",format.format(c5.getTime())); System.out.println(); //指定时区,语言环境构造 GregorianCalendar c6=new GregorianCalendar(t,Locale.CHINESE); System.out.printf("指定时区,语言环境构造:%s;",format.format(c6.getTime())); System.out.println();
输出:
默认时区构造:2023-08-25 14:37:23;(当前时间) 指定日期构造:2023-02-01 00:00:00;//参数是1,但是这里是2,这一点需要注意 指定日期,时间构造:2023-02-01 11:11:11;//参数是1,但是这里是2,这一点需要注意 指定语言环境的默认时区构造:2023-08-25 14:37:23; 指定时区构造:2023-08-25 14:37:23; 指定时区,语言环境构造:2023-08-25 14:37:23;
实例方法
修改日期/时间
1. add(int field,int amount):根据日历规则,将指定的时间添加到指定的日历字段
操作时会改变较大日历字段的值
2. roll(int field, boolean up):在给定的时间字段上添加或减少单个时间单位
field:日历字段;up:true:新增单个单位field;false:减少单个单位field
3. roll(int field, int amount):在给定的日历字段上添加指定数量时间单位
field:日历字段;amount:数量,如果为0,则改方法不进行任何操作
不会改变较大的字段,超过后是从1开始
System.out.println("add-------------------");
System.out.printf("当前时间:%s;",format.format(calendar.getTime()));
System.out.println();
calendar.add(Calendar.DATE,30);
System.out.printf("add DATE 30:%s;",format.format(calendar.getTime()));
System.out.println();
calendar.add(Calendar.DATE,-40);
System.out.printf("add DATE -40:%s;",format.format(calendar.getTime()));
System.out.println();
System.out.println("\nroll----------------------");
calendar.set(2022,11,31);
System.out.printf("当前时间:%s;",format.format(calendar.getTime()));
System.out.println();
calendar.roll(Calendar.MONTH,true);
System.out.printf("通过roll新增一个月:%s;",format.format(calendar.getTime()));
System.out.println();
System.out.println();
calendar.set(2022,11,31);
System.out.printf("当前时间:%s;",format.format(calendar.getTime()));
System.out.println();
calendar.roll(Calendar.MONTH,3);
System.out.printf("通过roll新增3个月:%s;",format.format(calendar.getTime()));
System.out.println();
calendar.roll(Calendar.MONTH,-5);
System.out.printf("通过roll减少5个月:%s;",format.format(calendar.getTime()));
System.out.println();
输出:
add------------------- 当前时间:2023-09-07; add DATE 30:2023-10-07; add DATE -40:2023-08-28; roll---------------------- 当前时间:2022-12-31; 通过roll新增一个月:2022-01-31; 当前时间:2022-12-31 ; 通过roll新增3个月:2022-03-31; 通过roll减少5个月:2022-10-31;
获取日期/时间
-
getActualMinimum(int field):返回此日历实例此日历字段可能具有的最小值
-
getActualMaximum(int field):返回此日历实例此日期字段可能具有的最大值
-
getGreatestMinimum(int field):返回此日历字段的的最低最大值
-
getLeastMaximum(int field):返回此日历字段的的最高最小值
-
getMinimum(int field):返回此日历字段的最小值
-
getMaximum(int field):返回此日历字段的最大值
int year = 2021; GregorianCalendar calendar = new GregorianCalendar(year, 0, 1); System.out.printf("%s年周可能的最大值:%s;", year, calendar.getActualMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最低最大值:%s;", calendar.getLeastMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最大值:%s;", calendar.getMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("%s年周可能的最小值:%s;", year, calendar.getActualMinimum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最高最小值:%s;", calendar.getGreatestMinimum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最小值:%s;", calendar.getMinimum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.println("------"); int year1 = 2022; GregorianCalendar calendar1 = new GregorianCalendar(year1, 0, 1); System.out.printf("%s年周可能的最大值:%s;", year1, calendar1.getActualMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最低最大值:%s;", calendar1.getLeastMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最大值:%s;", calendar1.getMaximum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("%s年周可能的最小值:%s;", year1, calendar1.getActualMinimum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最高最小值:%s;", calendar1.getGreatestMinimum(Calendar.WEEK_OF_YEAR)); System.out.println(); System.out.printf("周最小值:%s;", calendar1.getMinimum(Calendar.WEEK_OF_YEAR)); System.out.println();
输出:
2021年周可能的最大值:52; 周最低最大值:50; 周最大值:53; 2021年周可能的最小值:1; 周最高最小值:1; 周最小值:1; ------ 2022年周可能的最大值:53; 周最低最大值:50; 周最大值:53; 2022年周可能的最小值:1; 周最高最小值:1; 周最小值:1;
其他
-
getTimeZone():获得时区
-
setTimeZone(TimeZone zone):设置指定时区
-
isLeapYear(int year):判断给定的年份是不是闰年
-
setGregorianChange(Date date):实例化指定时间的日历对象
-
setWeekDate(int weekYear, int weekOfYear, int dayOfWeek):给当前日历对象设置weekYear年的weekOfYear周,第dayOfWeek天

浙公网安备 33010602011771号