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类存在可变性,即可对属性进行修改
经验分享 程序员 微信小程序 职场和发展