Calendar类的常见方法与基本使用

    技术2026-02-18  12

    Calendar类的常见方法与基本使用

    什么是Calendar类

    由于java.util.Date设计中存在的一些问题,因此从jdk1.1之后,jdk中新增了java.util.Calendar类用于对日期类型处理;Calendar类由于是一个抽象类,因此无法直接实例化,如果需要获得Calendar的实例可以使用如下方法:

    Calendar c = Calendar.getInstance();

    Calendar常见方法

    get(int field) 获取指定字段的值 ,如 c.get(Calendar.YEAR) 获得 2020set(int field,int value) 设置指定字段的值 ,如 c.set(Calendar,YEAR,2021)getActualMaximum(int field) 获取指定字段具备的最大值getTime() 获取当前日历所表示的java.util.Date对象getTimeInMillis() 获取当前日历所表示时间的毫秒数(从1970年1月1日 0时0分0秒开始)…

    实例代码

    public static void main(String[] args) { Calendar c = Calendar.getInstance(); // c.set(Calendar.YEAR, 2021); //设置日期为 1 c.set(Calendar.DAY_OF_MONTH,1); System.out.println(c); //获取当前日历的所表示的年份 int year = c.get(Calendar.YEAR); System.out.println(year); //获取给定的日历所表示的月份 int month = c.get(Calendar.MONTH); System.out.println(month); //获取给定的日历所表示的日期(本月的第几天) int day = c.get(Calendar.DAY_OF_MONTH); System.out.println(day); //获取给定的日历所表示的小时 int hour = c.get(Calendar.HOUR_OF_DAY); //24小时制 HOUR:12小时制 System.out.println(hour); //获取给定的日历所表示的分钟 int min = c.get(Calendar.MINUTE); System.out.println(min); //获取给定的日历所表示的秒钟 int second = c.get(Calendar.SECOND); System.out.println(second); //获取今天是星期几 int week = c.get(Calendar.DAY_OF_WEEK); System.out.println("当前是这周的第几天:"+week); Calendar c2 = Calendar.getInstance(); c2.set(Calendar.YEAR, 2022); c2.set(Calendar.MONTH, 7); c2.set(Calendar.DAY_OF_MONTH,15); System.out.println(c2); //获取指定字段具备最大值,获得最大月份 int max = c2.getActualMaximum(Calendar.MONTH); System.out.println(max); //获取当前日历所表示月份的最大天数 int days = c2.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(days); GregorianCalendar gc = new GregorianCalendar(); //判断给定的年份是否是闰年 boolean leapYear = gc.isLeapYear(2020); System.out.println(leapYear); //将日历对象转换为java.util.Date Date date = gc.getTime(); System.out.println(date); }

    相关练习

    可运用Calendar类输出一个动态日历

    动态日历相关代码

    /** * 动态日历 * * @author PJW * */ public class ArrayDate { private GregorianCalendar gc = new GregorianCalendar(); private Calendar c = Calendar.getInstance(); public void arryCanlendar(int year,int month) { //计数器来通过一行输出数 满7换行 int count = 0; c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month-1); c.set(Calendar.DAY_OF_MONTH,1); int day = c.get(Calendar.DAY_OF_WEEK); //通过得到当月第一天是当月第一周的第几天 //day-1就是前面输出的空格数 for (int i = 0; i < day-1; i++) { System.out.print("\t"); count++; } Month(count); } public void Month(int count) { for (int i = 1; i <= c.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { System.out.print(i+"\t"); count++; //换行语句 if(count%7 == 0) { System.out.println(); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入年份:"); int year = sc.nextInt(); System.out.println("请输入月份:"); int month = sc.nextInt(); System.out.println("===========【"+year+"年"+month+"月"+"】========================"); System.out.println("日\t一\t二\t三\t四\t五\t六"); new ArrayDate().arryCanlendar(year, month); } }

    输出效果 可以自行加上UI,实现一个日历页面

    Processed: 0.013, SQL: 9