java中对日期往后加一天,或者往前减一天

对日期往后加一天,或者往前减一天

下面这个方法以yyyy-mm-dd的字符串作为入参,对时间往后加一天,并以yyyy-mm-dd的字符串返回:

	/**
     * 给时间加一天  接受时间类型:yyyy-mm-dd的字符串
     *
     * @return
     */
    public static String addOneDay(String time) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
        //将接收的time中的年月日截取成String数组
        String[] timeStr = time.split("-");
        //确定time中的那一年的那个月份有多少天
        Calendar calendar = Calendar.getInstance();
        int year = Integer.valueOf(timeStr[0]);
        int month = Integer.valueOf(timeStr[1]);
        int day = Integer.valueOf(timeStr[2]);
        calendar.set(year, month, 0);
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        //判断time中的日期是否超过了该年该月的最后一天,如果超过就进行以下处理
        if (day >= dayOfMonth) {
            String date = null;
            //判断月份是否是12月,不是就往后加一个月;是的话就把年份加一年
            if (month < 12) {
                month++;
                Date parse = dateFormat.parse(year + "-" + month + "-01");
                date = dateFormat.format(parse);
            } else if (month == 12) {
                year++;
                date = year + "-01-01";
            }
            return date;
        }
        //time中的日期没有超过该年该月的最后一天,则天数往后加一天
        calendar.setTime(dateFormat.parse(time));
        calendar.add(calendar.DATE, 1);
        return dateFormat.format(calendar.getTime());
    }

下面这个方法以yyyy-mm-dd的字符串作为入参,对时间往前减一天,并以yyyy-mm-dd的字符串返回:

	 /**
     * 给时间减一天   接受时间类型:yyyy-mm-dd的字符串
     *
     * @return
     */
    public static String minusOneDay(String time) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
        //将接收的time中的年月日截取成String数组
        String[] timeStr = time.split("-");
        Calendar calendar = Calendar.getInstance();
        int year = Integer.valueOf(timeStr[0]);
        int month = Integer.valueOf(timeStr[1]);
        int day = Integer.valueOf(timeStr[2]);
        //判断time中的日期是否是该年该月的一号,如果不是就往前减一天;如果是就看情况减月份和年份
        if (day <= 1) {
            String date = null;
            //如果月份不是1月,就对月份减一;如果月份是1月,就对年份减一;
            if (month > 1) {
                month--;
                Calendar c = Calendar.getInstance();
                c.set(year, month, 0);
                Date parse = dateFormat.parse(year + "-" + month + "-" + c.get(c.DAY_OF_MONTH));
                date = dateFormat.format(parse);
            } else if (month == 1) {
                year--;
                date = year + "-12-31";
            }
            return date;
        }
        //time中的日期不是该年该月的一号,直接往前减一天
        Date date = dateFormat.parse(time);
        calendar.setTime(date);
        calendar.add(calendar.DATE, -1);
        return dateFormat.format(calendar.getTime());
    }

测试结果如下:

输入一个时间,对这个时间进行加一天和减一天操作:

public static void main(String[] args) throws ParseException{
        String s = addOneDay("2021-01-01");
        String s1 = minusOneDay("2021-01-01");
        System.out.println( "加一天:"+s + '\n' + "减一天:"+s1);
}

在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值