【Java】 之 Date、Calendar

本文介绍如何利用Java中的Calendar类对日期进行加减操作,并提供了一个示例方法来计算两个日期间的月份间隔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Topic:

* Topic 1: 使用Calendar 对 天数 进行加减
* Topic 2: 使用Calendar 对 天数 进行加减

Topic 1 :使用Calendar 对 天数 进行加减
**Tips:**对格式转换一定要注意格式的正确性。

这里写图片描述

public void test() {

        String dateStr = "2017-8-31";

        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        try {

            Date date = sdf.parse(dateStr);
			
            System.out.println("before : " + sdf.format(date));

            Calendar c = Calendar.getInstance();

            c.setTime(date);
			
			//加2天
            c.add(Calendar.DAY_OF_MONTH, 2);

            date = c.getTime();

            System.out.println("after  : " + sdf.format(date));


        } catch (Exception e) {
            e.printStackTrace();
        }

    }
Topic 2:使用Calendar 求月份间隔数

根据两个时间,求得其之间的月份数

/**
     * 适用 当前时间 大于 起始时间
     * @param nowDateStr       当前时间字符串
     * @param originalDateStr  起始时间字符串
     * @return                 期数
     */
    private int getMonthInterval(String nowDateStr, String originalDateStr) {

        DateFormat sdf = new SimpleDateFormat("yyyy-MM");

        try {

            Date originalDate = sdf.parse(originalDateStr);

            Date nowDate= sdf.parse(nowDateStr);

            Calendar nowCalender = Calendar.getInstance();

            Calendar originalCalender = Calendar.getInstance();

            originalCalender.setTime(originalDate);

            nowCalender.setTime(nowDate);

            int originalYear = originalCalender.get(Calendar.YEAR);
            int nowYear = nowCalender.get(Calendar.YEAR);
            int originalMonth = originalCalender.get(Calendar.MONTH);
            int nowMonth = nowCalender.get(Calendar.MONTH);

            if (nowYear < originalYear || (nowYear == originalYear && nowMonth < originalMonth)) {
                return 0;
            }

            int yearInterval = Math.abs(nowYear - originalYear);

            int monthInterval = 0;

            if (nowMonth < originalMonth) {
                yearInterval --;
                monthInterval = nowMonth + 12 - originalMonth;
            } else {
                monthInterval = nowMonth - originalMonth;
            }

            return Math.abs(yearInterval * 12 + monthInterval);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return 0;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值