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;
获取日期/时间
  1. getActualMinimum(int field):返回此日历实例此日历字段可能具有的最小值

  2. getActualMaximum(int field):返回此日历实例此日期字段可能具有的最大值

  3. getGreatestMinimum(int field):返回此日历字段的的最低最大值

  4. getLeastMaximum(int field):返回此日历字段的的最高最小值

  5. getMinimum(int field):返回此日历字段的最小值

  6. 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;
其他
  1. getTimeZone():获得时区

  2. setTimeZone(TimeZone zone):设置指定时区

  3. isLeapYear(int year):判断给定的年份是不是闰年

  4. setGregorianChange(Date date):实例化指定时间的日历对象

  5. setWeekDate(int weekYear, int weekOfYear, int dayOfWeek):给当前日历对象设置weekYear年的weekOfYear周,第dayOfWeek天

posted @ 2023-09-08 14:13  Faminecls  阅读(239)  评论(0)    收藏  举报