Calendar 类是一个抽象类,它为特定瞬间与 YEAR MONTH DAY_OF—MONTH HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如获得下星期的日期) 提供了一些方法。
        创建 Calendar 对象不能使用 new 关键字,因为 Calendar 类是一个抽象类,但是它提供了一个getInstance() 方法来获得 Calendar 类的对象。 getInstance() 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
Calendar对象实例化演示:
Calendar c = Calendar.getInstance();

方法展示:

方法

描述
void add(int field, int amount)
根据日历的规则,为给定的日历字段 field 添加或减去指定的时间
amount
boolean after(Object when)
判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回
判断结果
boolean before(Object when)
判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回
判断结果
void clear()
清空 Calendar 中的日期时间值
int compareTo(Calendar
anotherCalendar)
比较两个 Calendar 对象表示的时间值(从格林威治时间 1970
01 01 00 00 00 秒至现在的毫秒偏移量),大则返回
1 ,小则返回 -1 ,相等返回 0
int get(int field)
返回指定日历字段的值
int getActualMaximum(int
field)
返回指定日历字段可能拥有的最大值
int getActualMinimum(int
field)
返回指定日历字段可能拥有的最小值
int getFirstDayOfWeek()
获取一星期的第一天。根据不同的国家地区,返回不同的值
static Calendar getInstance()
使用默认时区和语言坏境获得一个日历
static Calendar
getInstance(TimeZone zone)
使用指定时区和默认语言环境获得一个日历
static Calendar
getInstance(TimeZone zone,
Locale aLocale)
使用指定时区和语言环境获得一个日历
Date getTime()
返回一个表示此 Calendar 时间值(从格林威治时间 1970 01
01 00 00 00 秒至现在的毫秒偏移量)的 Date 对象
long getTimeInMillis()
返回此 Calendar 的时间值,以毫秒为单位
void set(int field, int value)
为指定的日历字段设置给定值
void set(int year, int month,
int date)
设置日历字段 YEAR MONTH DAY_OF_MONTH 的值
void set(int year, int month,
int date, int hourOfDay, int
minute, int second)
设置字段 YEAR MONTH DAY_OF_MONTH HOUR MINUTE
SECOND 的值
void setFirstDayOfWeek(int
value)
设置一星期的第一天是哪一天

        

        Calendar 对象可以调用 set() 方法将日历翻到任何一个时间,当参数 year 取负数时表示公元前。Calendar 对象调用 get() 方法可以获取有关年、月、日等时间信息,参数 field 的有效值Calendar 静态常量指定。

        Calendar 类中定义了许多常量,分别表示不同的意义。
  • Calendar.YEAR:年份。
  • Calendar.MONTH:月份。
  • Calendar.DATE:日期。
  • Calendar.DAY_OF_MONTH:日期,和上面的字段意义完全相同。
  • Calendar.HOUR:12小时制的小时。
  • Calendar.HOUR_OF_DAY:24 小时制的小时。
  • Calendar.MINUTE:分钟。
  • Calendar.SECOND:秒。
  • Calendar.DAY_OF_WEEK:星期几。

常用方法演示:

1、void add(int field, int amount),根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount,第一个参数虽然传的为int类型,但Java官方怕我们记错所以可以用"Calendar."去得到我们想添加或减去的指定时间量,例如下列代码第一个参数传入"Calendar.DATE",代表在天数上添加或减去:

//获取默为当前时间的Calendar日期对象
Calendar c = Calendar.getInstance();
//格式化日期输出当前日期
System.out.printf("%tF %<tT%n",c);

//加五天
c.add(Calendar.DATE,5);
System.out.printf("%tF %<tT%n",c);

//在加五天的基础上减10天
c.add(Calendar.DATE,-10);
System.out.printf("%tF %<tT%n",c);

运行结果展示:

2、void clear(),清空 Calendar 中的日期时间值。此处的清空时间并不是说将时间设置为“0000-00-00 00:00:00",而是重置时间戳为0,即日期为:“1970-01-01 00:00:00”。
代码演示:
Calendar c = Calendar.getInstance();

//格式化输出当前日期
System.out.printf("%tF %<tT%n",c);

//清除日期
c.clear();

//格式化输出清除后的日期
System.out.printf("%tF %<tT%n",c);

运行展示:

3、int get(int field),返回指定日历字段的值 int 类型参数也可以用“Calendar.”来代替,这样更方便编程人员来识别使用。

代码演示:

Calendar c = Calendar.getInstance();
//按年月日时分秒依次输出
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.get(Calendar.DATE));
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.MINUTE));
System.out.println(c.get(Calendar.SECOND));

运行结果展示:

4、 Date getTime(), 返回一个表示此 Calendar 时间值(从格林威治时间 1970 01
01 00 00 00 秒至现在的毫秒偏移量)的 Date 对象,而Date对象在获得时间戳时调用的为gettime()方法,因此我们可以利用此方法来事项将Calendar对象转化为时间戳。
代码演示:
Calendar c = Calendar.getInstance();

//获得Date对象
Date date = c.getTime();

//利用Date对象获取时间戳
long l = date.getTime();
System.out.println(l);

运行结果演示:

 5、long getTimeInMillis() ,4方法中获取时间戳的方法过于麻烦,我们可以利用此方法直接获取时间戳:

代码演示:

Calendar c = Calendar.getInstance();

//获取Calendar对象时间戳
long l = c.getTimeInMillis();
System.out.println(l);
运行结果展示:

6、void set(int field, int value) ,为指定的日历字段设置给定值,此方法们可以只针对年月日时分秒其中一项进行时间修改:

代码演示:

Calendar c = Calendar.getInstance();
//分别对年月日时分秒进行修改
c.set(Calendar.YEAR,2022);
c.set(Calendar.MONTH,1);
c.set(Calendar.DATE,1);
c.set(Calendar.HOUR,0);
c.set(Calendar.MINUTE,0);
c.set(Calendar.SECOND,0);

格式化输出修改后的Calendar对象
System.out.printf("%tF %<tT%n",c);
运行结果展示:

 7、void set(int year, int month, int date),设置日历字段 YEARMONTH DAY_OF_MONTH 的值。设置年月日,时分秒默认为00:00:00,使用此方法进行设置时要将想要设置的年份减1,否则得不到想要的结果。

代码演示:

Calendar c = Calendar.getInstance();
//设置为2000年5月8日
c.set(2000,5-1,8);

//格式化输出
System.out.printf("%tF %<tT%n",c);

运行结果展示:

8、void set(int year, int month, int date, int hourOfDay, int minute, int second),该方法7方法相比方法名相同但参数列表不同,且该方法可以将时间设置精确到时分秒,同样的在设置月份的时候要进行减1。

代码演示:

Calendar c = Calendar.getInstance();
//设置时间为2000年5月8日12时5分59秒
c.set(2000,5-1,8,12,5,59);
System.out.printf("%tF %<tT%n",c);

运行结果展示:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐