关于Calender类的使用

一、核心知识点

不能直接 new:Calendar 是抽象类,通过 Calendar.getInstance() 获取实例。
月份从 0 开始:0 = 一月,11 = 十二月(易错点)。
星期从 1 开始:1 = 周日,2 = 周一,...,7 = 周六。
常用常量:YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE、SECOND。

二、基础使用示例java运行import java.util.Calendar;

public class CalendarDemo {
public static void main(String[] args) {
// 1. 获取 Calendar 实例(当前系统时间)
Calendar cal = Calendar.getInstance();

// 2. 获取当前时间的各个字段
int year = cal.get(Calendar.YEAR); // 年
int month = cal.get(Calendar.MONTH) + 1; // 月(+1 修正)
int day = cal.get(Calendar.DAY_OF_MONTH); // 日
int hour = cal.get(Calendar.HOUR_OF_DAY); // 24小时制
int minute = cal.get(Calendar.MINUTE); // 分
int second = cal.get(Calendar.SECOND); // 秒

System.out.println("当前时间:" + year + "-" + month + "-" + day
+ " " + hour + ":" + minute + ":" + second);

// 3. 设置指定日期(2025年12月25日)
cal.set(Calendar.YEAR, 2025);
cal.set(Calendar.MONTH, Calendar.DECEMBER); // 直接用常量更安全
cal.set(Calendar.DAY_OF_MONTH, 25);
System.out.println("设置后:" + cal.getTime());

// 4. 时间计算(加3天,减2小时)
cal.add(Calendar.DAY_OF_MONTH, 3); // 加3天
cal.add(Calendar.HOUR, -2); // 减2小时
System.out.println("计算后:" + cal.getTime());
}
}

三、常用方法大全

  1. 获取时间字段java运行Calendar cal = Calendar.getInstance();
    cal.get(Calendar.YEAR); // 年
    cal.get(Calendar.MONTH) + 1; // 月(必须+1)
    cal.get(Calendar.DAY_OF_MONTH); // 日
    cal.get(Calendar.HOUR_OF_DAY); // 24小时制
    cal.get(Calendar.HOUR); // 12小时制
    cal.get(Calendar.MINUTE); // 分
    cal.get(Calendar.SECOND); // 秒
    cal.get(Calendar.DAY_OF_WEEK); // 星期(1=周日,2=周一)

  2. 设置时间java运行// 方式1:单独设置
    cal.set(Calendar.YEAR, 2025);
    cal.set(Calendar.MONTH, 11); // 11=十二月

// 方式2:一次性设置(年,月,日,时,分,秒)
cal.set(2025, 11, 25, 18, 30, 0);

  1. 时间加减计算java运行cal.add(Calendar.YEAR, 1); // 加1年
    cal.add(Calendar.MONTH, -1); // 减1月
    cal.add(Calendar.DAY_OF_MONTH, 7); // 加7天

  2. 转换为 Date 对象java运行Date date = cal.getTime(); // Calendar → Date
    月份从 0 开始

错误:set(2025, 12, 25) → 变成 2026 年 1 月
正确:set(2025, 11, 25) 或 set(2025, Calendar.DECEMBER, 25)

星期第一天是周日

DAY_OF_WEEK:1 = 周日,2 = 周一,7 = 周六

五、Java 8 优化方案
Java 8 推出了 全新的日期 API(java.time 包),解决了 Calendar 的线程不安全、设计不友好问题,更简单易用:java运行import java.time.LocalDateTime;

public class NewDateDemo {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now(); // 当前时间
LocalDateTime future = now.plusDays(3); // 加3天
System.out.println("新API时间:" + now);
}
}

posted @ 2026-05-10 18:16  李伯韬  阅读(11)  评论(0)    收藏  举报