• Calendar类


    创建Calendar对象

    Calendar 是一个抽象日历类, 无法通过直接实例化得到对象。因此, Calendar 提供了一个方法 getInstance(),来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化。

    //获得当前地区日历子对象
    Calendar calendar = Calendar.getInstance();
    System.out.println(calendar);
    
    • 1
    • 2
    • 3

    以上输出结果为一个日历列表,其中的属性都可以通过方法取出来,如下

    java.util.GregorianCalendar[time=1655993480091,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=5,WEEK_OF_YEAR=26,WEEK_OF_MONTH=4,DAY_OF_MONTH=23,DAY_OF_YEAR=174,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=11,SECOND=20,MILLISECOND=91,ZONE_OFFSET=28800000,DST_OFFSET=0]
    
    • 1

    这种方法和上边的方法完全相同

    //获得当前地区日历子对象
    Calendar calendar = new GregorianCalendar();
    System.out.println(calendar);
    
    • 1
    • 2
    • 3

    Calendar类中常用的常量字段

    常量字段说明
    Calendar.ERAERA表示纪元,只能为0或1。0表示BC(“before Christ”,即公元前);1表示AD(拉丁语“Anno Domini”,即公元)。
    Calendar.YEAR表示年份
    Calendar.MONTH表示月份,需要加1,因为0表示1月,1表示2月,以此类推
    Calendar.HOUR小时(12小时制)
    Calendar.HOUR_OF_DAY一天中第几个小时(24小时制)
    Calendar.MINUTE分钟
    Calendar.SECOND
    Calendar.MILLISECOND毫秒
    Calendar.DAY_OF_YEAR一年中第几天
    DAY_OF_MONTH一月中第几天
    DAY_OF_WEEK一周中第几天,注意,周日是1,周一是2,…
    Calendar.DATE一月中第几天,同DAY_OF_MONTH的值是一样的
    Calendar.DAY_OF_WEEK_IN_MONTH当月内一周中的某天的序号
    Calendar.WEEK_OF_YEAR一年中的星期数,即本年中第几个星期
    Calendar.WEEK_OF_MONTH当前月中的星期数,即本月中第几个星期
    Calendar.DAY_OF_WEEK_IN_MONTH当前月中的第几个星期
    Calendar.AM_PMAM_PM是在中午之前还是在中午之后,在中午12点之前返回0,在中午12点(包括12点)之后返回1
    Calendar.JANUARY1月
    Calendar.FEBRUARY2月
    Calendar.MARCH3月
    Calendar.APRIL4月
    Calendar.MAY5月
    Calendar.JUNE6月
    Calendar.JULY7月
    Calendar.AUGUST8月
    Calendar.SEPTEMBER9月
    Calendar.OCTOBER10月
    Calendar.NOVEMBER11月
    Calendar.DECEMBER12月

    Calendar的set()方法

     public static void fun2(){
    	 public static void main(String[] args){
    	   Calendar c=Calendar.getInstance();
    	        //设置月份到十月份
    	        //c.set(Calendar.MONTH,9);
    	        //设置一个日期2022-2-20
    	        c.set(2022,2,20);
    	        //获取设置的日期
    	        int year=c.get(Calendar.YEAR);
    	        int month=c.get(Calendar.MONTH)+1;
    	        int day=c.get(Calendar.DAY_OF_MONTH);
    	        System.out.println(year+"年"+month+"月"+day+"日");
    	}  
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    显示结果:

    2022320
    • 1

    Calendar的get()方法

    获取日历字段的值 是int类型

     public static void fun1(){
          public static void main(String[] args){
          	  Calendar c=Calendar.getInstance();
            //获取当前的年月日
            int year=c.get(Calendar.YEAR);
            //获取到的月份比真实月份小1,要进行+1操作
            int month=c.get(Calendar.MONTH)+1;
            int day=c.get(Calendar.DAY_OF_MONTH);
            System.out.println(year+"年"+month+"月"+day+"日");
          }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    显示结果:

    2022320
    • 1

    Calendar的add()方法

    日历偏移量

     public static void fun3(){
           public static void main(String[] args){
           	 //获取当前日历子类对象
            Calendar c=Calendar.getInstance();
            //对于向前日期往后偏移310天,如果添上负号-,则代表往前偏移
            c.add(Calendar.DAY_OF_MONTH,310);
            //获取偏移后的年份
            int year=c.get(Calendar.YEAR);
            //偏移后的月份,因为获取到的月份比真实月份小1的,所以要+1操作
            int month=c.get(Calendar.MONTH)+1;
            //获取偏移后的月份日数
            int day=c.get(Calendar.DAY_OF_MONTH);
            System.out.println(year+"年"+month+"月"+day+"日");
           }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    显示结果:

    2020124
    • 1

    判断是否是闰年

    package cn.chang.Demo2;
    
    import java.util.Calendar;
    
    //判断某一年份是否为闰年
    思想      先设置某一年的三月一号  然后往前偏移一天,获取偏移后月份(也就是二月)的天数和28比较,相等是平年,不相等就是闰年
    public class LeapYear {
        public static void main(String[] args){
            Calendar c=Calendar.getInstance();
            //设置一个年份的三月一号,这里以2019年为例
            c.set(2019,2,1);
            //往前偏移一天
            c.add(Calendar.DAY_OF_MONTH,-1);
            //get 获取偏移后月份的天数
            int day=c.get(Calendar.DAY_OF_MONTH);
            System.out.println(day);
            if(day==28){
                System.out.println("该年是平年");
            }else{
                System.out.println("该年是闰年");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    显示结果:

    28
    该年是平年
    
    • 1
    • 2
  • 相关阅读:
    1743. 从相邻元素对还原数组-哈希表法
    nacos的心跳机制详解
    倍福TwinCAT3实现CSV、TXT文件读写操作
    Java安全 CC链3分析
    精解括号匹配问题与极致栈设计:揭开最大栈和最小栈的奥秘
    Review Intro to NoSQL
    通用任务批次程序模板
    回放线上流量利器-GoReplay
    JavaScript进阶之路(一)初学者的开始
    Node.js【模块的加载机制、初识 Express、Express 路由】
  • 原文地址:https://blog.csdn.net/qq_43102730/article/details/125390494