Java API之Calendar(日历)类[详解]

Calendar(日历)类

一.Calendar概述

  • 位于java.util.Caleandar包中

  • 是一个抽象基类,用于完成日期字段之间相互转换的功能

  • 由于是抽象类型,因此不可直接实例化(不能new 对象)

  • 一个Caleandar类的实例是系统时间的抽象表示

  • static Calendar getInstance 使用默认时区和环境获得一个日历

二.如何实例化?

两种方式:

1.创建其子类(GregorianCaleandar)对象

//创建子类(GergorianCalendar)对象
        Calendar calendar1 = new GregorianCalendar();
        System.out.println(calendar1);

2.调用其静态方法getInstance()

//调用getInstance()方法
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);
  • getInstance()方法底层还是通过调用GregorianCaleandar来new一个对象

  • 因此两种方法本质上相同,只不过第二种方法更便于记忆,也更常用

三.常用方法示例

①.get() //用来获取常用属性信息  

 int days = calendar.get(Calendar.DAY_OF_MONTH);   //获取本月的第几天
        System.out.println(days);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));     //获取今天是本月的第几周
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));     //获取今年的第几天

②.set() //用来设置属性

        calendar.set(Calendar.DAY_OF_MONTH,15);    //设置今天为本月的第15天
        int day1 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day1);    //结果为:15

③.add() //用来增添属性值(体现可变性)

        calendar.add(Calendar.DAY_OF_MONTH,6);    //在原有时间基础上增加相应的天数
        int day2 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day2);    //由于上面设置时间为15号,所以在15的基础上增加6天,变为21,体现了Caleandar类的可变性

④getTime() //例如用于将日历类的对象转换为Date类

        Date date1 = Calendar.getInstance().getTime();
        System.out.println(date1);   //结果为:Thu Nov 25 21:40:15 CST 2021

⑤setTime() //例如用于将Date类的对象转换为日历类

        Calendar.getInstance().setTime(date1);
        int day3 = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(day3);    //结果为:21

注意点:

  • 获取月份时: 一月为0,二月为1,以此类推

  • 获取星期时: 周天为1,周一为2,以此类推

四.Calendar类的缺点

  • 由于是用abstract修饰的抽象类,所以无法直接创建对象,需创建子类的对象或调用静态方法getInstance()来间接实例化

  • Calendar类存在可变性,即可对属性进行修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会写代码的菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值