欢迎来到徐庆高(Tea)的个人博客网站
磨难很爱我,一度将我连根拔起。从惊慌失措到心力交瘁,我孤身一人,但并不孤独无依。依赖那些依赖我的人,信任那些信任我的人,帮助那些给予我帮助的人。如果我愿意,可以分裂成无数面镜子,让他们看见我,就像看见自己。察言观色和模仿学习是我的领域。像每个深受创伤的人那样,最终,我学会了随遇而安。
当前位置: 日志文章 > 详细内容

java日期加减Calendar日历类型常见问题

2025年08月02日 Java
java中,我们可以使用calendar类来进行日期的加减操作。常见的方法如下:获取当前日期calendar calendar = calendar.getinstance();date date =

java中,我们可以使用calendar类来进行日期的加减操作。

常见的方法如下:

获取当前日期

calendar calendar = calendar.getinstance();
date date = calendar.gettime();

日期加减

// 加一天
calendar.add(calendar.day_of_month, 1);
// 减一天
calendar.add(calendar.day_of_month, -1);
// 加一小时
calendar.add(calendar.hour_of_day, 1);
// 减一小时
calendar.add(calendar.hour_of_day, -1);
// 加一分钟
calendar.add(calendar.minute, 1);
// 减一分钟
calendar.add(calendar.minute, -1);

获取指定日期的某个字段值

// 获取年份
int year = calendar.get(calendar.year);
// 获取月份(注意:月份从0开始,所以需要加1)
int month = calendar.get(calendar.month) + 1;
// 获取日期
int day = calendar.get(calendar.day_of_month);
// 获取小时
int hour = calendar.get(calendar.hour_of_day);
// 获取分钟
int minute = calendar.get(calendar.minute);
// 获取秒
int second = calendar.get(calendar.second);

获取指定日期的某个字段的最大值

// 获取当前月份的最大天数
int maxday = calendar.getactualmaximum(calendar.day_of_month);

1、simpledateformat类

		date date = new date();
 
		simpledateformat spf = new simpledateformat("yyyy年-mm月-dd日:hh时-mm分-ss秒");
 
		system.out.println(spf.format(date));

        //输出为:
        
        2021年-7月-14日:17时-15分-53秒

2、calendar类

package com.hp.date;

import java.text.simpledateformat;
import java.util.calendar;
import java.util.date;

public class calendardemo{
    public static void main(string[] args) throws exception {
        //获取获取系统的当前日历对象
        calendar instance = calendar.getinstance();

        //1、获取今天是周几
        int weekday = instance.get(calendar.day_of_week);
        system.out.println("今天是周:" + (weekday - 1));

        //2、获取系统当前年
        int year = instance.get(calendar.year);
        system.out.println("今年是:" + year + "年");

        //3、获取系统当前月
        int month = instance.get(calendar.month);
        system.out.println("本月是:" + (month + 1) + "月");

        //4、获取系统当前日
        int day = instance.get(calendar.date);
        system.out.println("今天是" + day + "号");

        //5、获取上午跟下午
        int am_pm = instance.get(calendar.am_pm);
        if (am_pm == 0)
            system.out.println("是上午");
        else
            system.out.println("是下午");

        //6、获取当前的系统时间[date-->string]的过程
        date time = instance.gettime();//获取的是当前系统的时间
        simpledateformat format = new simpledateformat("yyyy-mm-dd hh:mm:ss sss");
        string showtime = format.format(time);
        system.out.println("当前系统时间为:" + showtime);

        //7、自定义日历的时间
        string strtime = "2021-07-07";
        date date = new simpledateformat("yyyy-mm-dd").parse(strtime);
        instance.settime(date);//将时间对象data设置为新的日历
        system.out.println("修改后的系统时间为:" + new simpledateformat("yyyy-mm-dd hh:mm:ss sss").format(instance.gettime()));
    }
    
  		system.out.println("------------calendar和date转换------------");
        date now = calendar.gettime();
        calendar.settime(now);


        system.out.println("------------calendar日期计算以及判断------------");
        calendar = new gregoriancalendar();
        calendar calendar2 = new gregoriancalendar();
        calendar2.set(calendar.year, 2800);
        //是否在某个时间(calendar2)之后
        system.out.println(calendar.after(calendar2));
        //是否在某个时间(calendar2)之前
        system.out.println(calendar.before(calendar2));
        //增加多少年年,月日以及时分秒同理
        calendar.add(calendar.year, -10);

    } 
}

3、异常调试

同时在调用parse这个方法时,会出现异常,
try {

}    catch (parseexception e) {
e.printstacktrace();
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。