Calendar介绍:
Calendar类为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化。
下面代码中给出Calendar类常用的方法,详细注释已经在代码中给出:
代码一:
public class CalendarDemo { public static void main(String[] args) { //获取Calendar对象 Calendar calendar = Calendar.getInstance(); //多态的形式得到的对象 // System.out.println(calendar); //public int get(int field) 返回给定日历字段的值 // int year = calendar.get(Calendar.YEAR); // int month = calendar.get(Calendar.MONTH) + 1; //月份是从零开始的 // int date = calendar.get(Calendar.DATE); // System.out.println(year + "年 " + month + "月 " + date + "日"); //2021年 11月 30日 //需求1 3年前的今天 //根据日历的规则,将指定的时间量添加或减去给定的日历字段 // calendar.add(Calendar.YEAR,-3); // int year = calendar.get(Calendar.YEAR); // int month = calendar.get(Calendar.MONTH) + 1; //月份是从零开始的 // int date = calendar.get(Calendar.DATE); // System.out.println(year + "年 " + month + "月 " + date + "日");//2018年 11月 30日 //需求2 10年后的5天前 // calendar.add(Calendar.YEAR, 10); // calendar.add(Calendar.DATE, -5); // // int year = calendar.get(Calendar.YEAR); // int month = calendar.get(Calendar.MONTH) + 1; //月份是从零开始的 // int date = calendar.get(Calendar.DATE); // System.out.println(year + "年 " + month + "月 " + date + "日"); //2031年 11月 25日 //设置当前日历的年月日 calendar.set(2025,11,30); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; //月份是从零开始的 int date = calendar.get(Calendar.DATE); System.out.println(year + "年 " + month + "月 " + date + "日"); //2025年 12月 30日 } }
代码二:
public class Calendar_ { public static void main(String[] args) { //1.Calendar是一个抽象类,并且构造器是private //2.可以通过getInstance()来获取实例 //3.提供大量的方法和字段给程序员 //4.Calendar没有提供对应的格式化的类,因此需要程序员自己组合来输出(灵活) //5.如果我们需要按照24小时进制来获取时间,Calendar.HOUR--->Calendar.HOUR_OF_DAY Calendar calendar = Calendar.getInstance();//创建日历类对象 System.out.println("calendar=" + calendar); //2.获取日历类对象的某个日历字段 System.out.println("年:" + calendar.get(Calendar.YEAR)); System.out.println("月:" + (calendar.get(Calendar.MONTH) + 1)); System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("小时:" + calendar.get(Calendar.HOUR)); System.out.println("分钟:" + calendar.get(Calendar.MINUTE)); System.out.println("秒:" + calendar.get(Calendar.SECOND)); System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.HOUR) + ":" + calendar.get(Calendar.MINUTE) + ":" + calendar.get(Calendar.SECOND) ); } }
输出结果如下:
calendar=java.util.GregorianCalendar[time=1647662681898,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=2,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,DAY_OF_MONTH=19,DAY_OF_YEAR=78,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=4,SECOND=41,MILLISECOND=898,ZONE_OFFSET=28800000,DST_OFFSET=0] 年:2022 月:3 日:19 小时:0 分钟:4 秒:41 2022-3-19 0:4:41
练习,获取任意年份2月份有多少天?
public class CalendarTest { public static void main(String[] args) { //键盘输入任意的年份 Scanner sc = new Scanner(System.in); System.out.println("请输入年份:"); int year = sc.nextInt(); Calendar calendar = Calendar.getInstance(); //设置日历对象的年,月,日 calendar.set(year, 2, 1); //3月1日往前推一天,就是2月的最后一天 calendar.add(Calendar.DATE, -1); //获取这一天输出即可 int day = calendar.get(Calendar.DATE); System.out.println(year + "年的2月份有" + day + "天"); } }
输出结果: