java1.8 时间计算

1.计算过去指定天数的时间:

/**
     * 计算过去天数,
     * 返回:日期 yyyy-MM-dd 00:00:00 String
     * */
    private String computDay(String day){
        //0:今天 7:过去七天  30:过去30天   90:过去三个月  180:过去半年 365:过去一年
        //month0:本月  month1:上一个月   month2:上两个月  month3:上三个月
        LocalDateTime now = LocalDateTime.now();
        String fomater="yyyy-MM-dd HH:mm:ss";
        String nowday = now.format(DateTimeFormatter.ofPattern(fomater));
        String strtime = nowday;
        switch (day){
            
            case "month0":
                strtime = now.minusMonths(0).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "month1":
                strtime = now.minusMonths(1).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "month2":
                strtime = now.minusMonths(2).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "month3":
                strtime = now.minusMonths(3).format(DateTimeFormatter.ofPattern(fomater));
                break;



            case "0":
                strtime = nowday;
                break;
            case "1":
                strtime = now.minusDays(1).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "7":
                strtime = now.minusDays(7).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "30":
                strtime = now.minusDays(30).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "90":
                strtime = now.minusDays(90).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "180":
                strtime = now.minusDays(180).format(DateTimeFormatter.ofPattern(fomater));
                break;
            case "365":
                strtime = now.minusDays(365).format(DateTimeFormatter.ofPattern(fomater));
                break;
        }
        
        return strtime;
    }

 

2.计算两个日期之间包含的所有日期。例如计算2020-10-12到2020-10-24之间的所有日期

/**
     * 计算两个日期之间的日期,包括两个开始和结束两个日期
     * */
    public List getDayListOnTwoDay(String start, String end){
        LocalDateTime parse = LocalDateTime.parse(start, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime parse1 = LocalDateTime.parse(end, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        
        List list = new ArrayList();
        list.add(parse.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        LocalDateTime nextDay = parse.plusDays(1);
        //下一天在开始时间之后,在结束时间之前
        System.out.println(nextDay+"--"+nextDay.isAfter(parse) +","+ nextDay.isBefore(parse1));
        while (nextDay.isAfter(parse) && nextDay.isBefore(parse1)){
            list.add(nextDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
            nextDay = nextDay.plusDays(1);
        }
        list.add(parse1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        return list;
    }

3.计算指定日期之前天数的日期 。例如计算2020-10-12日前第2天的日期

/***
     * 计算某日期之前指定天数的日期
     * 参数:
     * 计算的日期
     * 计算天数
     * */
    public String getBeforTime(String startTime,Integer day){
        LocalDateTime time = LocalDateTime.parse(startTime,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        return time.minusDays(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }


 

4.计算某日期之后指定天数的日期,例如计算2020-10-12日后第2天的日期

    /***
     * 计算某日期之后指定天数的日期
     * 参数:
     * 计算的日期
     * 计算天数
     * */
    public String getAfterTime(String startTime,Integer day){
        LocalDateTime time = LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        return time.plusDays(day).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小张帅三代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值