Calendar日历类型常见方法

发布时间 2023-11-25 11:44:16作者: 星川~

 

概括:

Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

1.get( )方法

 @Test
    public void getCalendar(){
        Calendar cal=Calendar.getInstance();
        //获取年
        System.out.println("年\t" + cal.get(Calendar.YEAR));
        //获取月
        System.out.println("月\t" + (cal.get(Calendar.MONTH)+1));  //月份从下标0开始 所以+1
        //获取日
        System.out.println("日\t" + cal.get(Calendar.DAY_OF_MONTH));
        //获取时
        System.out.println("时\t" + cal.get(Calendar.HOUR_OF_DAY));
        //获取分
        System.out.println("分\t"+ cal.get(Calendar.MINUTE));
    }

 

运行效果如下:

年 2023
月 11
日 23
时 11
分 42

2、set( ) 设置时间

 @Test
    public  void setCalendar(){
        Calendar cal=Calendar.getInstance();
        System.out.println("当前时间"+cal.getTime());
        cal.set(2023,11,11);//设置日期
        System.out.println("set设置的时间"+cal.getTime());

        //当读赋值 设置年月日...
        Calendar cal1=Calendar.getInstance();
        cal1.set(Calendar.YEAR,2022);
        cal1.set(Calendar.MONTH,12);
        cal1.set(Calendar.DATE,12);
        System.out.println("set分别赋值的时间"+cal1.getTime());
    }

 

运行效果:

当前时间Fri Nov 24 15:58:27 CST 2023
set设置的时间Mon Dec 11 15:58:27 CST 2023
set分别赋值的时间Thu Jan 12 15:58:27 CST 2023

3、常用的add方法

 @Test
    public void addCalendar(){
        Calendar cld=Calendar.getInstance();
        cld.set(2023,11,11);//设置日期
        cld.add(Calendar.YEAR,1);  //增加一年
        System.out.println(cld.getTime());
    }

 

效果如下:

Wed Dec 11 16:02:05 CST 2024

4、after()方法表示的时间是否在指定时间之后, before( ) 方法则之前, 返回判断结果

@Test
    public void afterCalendarBefore() {
        // 获取当前时间
        Calendar cld = Calendar.getInstance();
        // 设置指定时间
        cld.set(2024, 12, 12);
        Calendar cld2 = Calendar.getInstance();
        cld2.set(2023, 12, 12);
        // 获取指定时间的字符串
        String time1 = cld.get(Calendar.YEAR) + "-" + cld.get(Calendar.MONTH) + "-" + cld.get(Calendar.DAY_OF_MONTH);
        String time2 = cld2.get(Calendar.YEAR) + "-" + cld2.get(Calendar.MONTH) + "-" + cld2.get(Calendar.DAY_OF_MONTH);
        // 判断cld是否在cld2之后 反则之前
        if (cld.after(cld2)) {
            System.out.println("cld日期\t" + time1 + "在cld2日期\t" + time2 + "之后");
        }else if(cld.before(cld2)) {
            System.out.println("cld日期\t" + time1 + "在cld2日期\t" + time2 + "之前");
        }
    }

效果如下:

cld日期 2025-0-12在cld2日期 2024-0-12之后

5、compareTo比较器

使用Calendar的compareTo()方法:Calendar类实现了Comparable接口,因此可以直接使用compareTo()方法来比较两个Calendar对象的日期和时间。该方法返回一个整数,表示两个Calendar对象的比较结果。

@Test
   public  void compareTo(){
        // 创建两个日历对象
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        // 设置日历2的日期为2023年10月12日
        cal2.set(2023,10,12);
        // 比较两个日历对象的日期大小
        int result = cal1.compareTo(cal2);
        // 根据比较结果输出信息
        if (result < 0) {
            System.out.println(cal1.getTime() + " 在 " + cal2.getTime() + " 之前");
        } else if (result > 0) {
            System.out.println(cal1.getTime() + " 在 " + cal2.getTime() + " 之后");
        } else {
            System.out.println(cal1.getTime() + " 与 " + cal2.getTime() + " 相同");
        }
    }

输出结果如下:

Fri Nov 24 19:07:32 CST 2023 在 Sun Nov 12 19:07:32 CST 2023 之后