获取某一时间的前XX天/前XX个月的时间

/**
 * @Author: jiangwx
 * @Date: 2021/10/8 11:19
 */
public class PastDateUtil {

    public static long TIME = 86400000;

    public static String getPastDate(int interval,String endDate){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String startDate = "";
        try {
            // 将字符串的日期转为Date类型,ParsePosition(0)表示从第一个字符开始解析
            Date date = sdf.parse(endDate);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            // 正数表示该日期后n天,负数表示该日期的前n天
            calendar.add(Calendar.DATE, -interval);
            Date date1 = calendar.getTime();
            startDate = sdf.format(date1);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return startDate;
    }


    /**
     * 获取 startDate日期前(minusMonths) month月的日期
     * @param startDate 开始日期
     * @param month  几个月后
     * @return
     */
    public static String getMonthDate(int month,String startDate){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        Date endDate = null;
        try {
            date = sdf.parse(startDate);
            LocalDateTime localDateTime = date.toInstant()
                    .atZone(ZoneId.systemDefault() )
                    .toLocalDateTime().minusMonths (month);
            endDate = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return sdf.format(endDate);
    }

    /**
     * 根据截止时间以及 比较时间间隔,得到起始时间
     * @param endDate 截止时间
     * @param compareDate 集計期間 0:過去10日  1: 過去30日  2: 昨日
     * @return 起始时间
     */
    public static String getDate(String endDate,Integer compareDate) {
        String startDate = "";
        if (Constant.PAST_ONE_DAT.equals(compareDate)){
            startDate = PastDateUtil.getPastDate(Constant.ONE_DAT,endDate);
        }else if (Constant.PAST_TEN_DAT.equals(compareDate)){
            startDate = PastDateUtil.getPastDate(Constant.TEN_DAT,endDate);
        }else if(Constant.PAST_THIRTY_DAT.equals(compareDate)){
            startDate = PastDateUtil.getPastDate(Constant.THIRTY_DAT,endDate);
        }
        return startDate;
    }


    public static void main(String[] args) throws ParseException{
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        String date=getMonthDate(4,"2020-06-30");
        System.out.println("前month月的时间:" + date);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值