日期的加减操作util

191 阅读1分钟
/**
     * 传入一个时间日期 当前日期减一
     * @param nowDate 日期
     * @return 日期 -1
     */
 private static String  getNextDate(String nowDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //根据传入的日期字符串,操作参数("+","-"),加数(要操作的天数),对日期进行加减操作
        String dateStr = "2020-07-28 14:29:01";

        // 转化原时间的的格式(发现用带'-'的字符串进行Date.parse() 时会报错,经过这样替换可以实现)
        String str = nowDate.replace("-", "/");//2020/07/28 14:29:01

        // 加减时间类型  👇加减看这里
        String operator = "-";
        //String operator = "+";

        // 加减的天数
        Integer i = 1;

        // 定义变量接收转化的时间值
        long j = 0;
        Date date = null;

        try {
            j = Date.parse(str);//解析成时间戳
            date = new Date(j);//在转成 (Tue Jul 28 14:29:01 CST 2020)
        } catch (Exception e) {
            e.printStackTrace();
        }
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTime(date);

        //add(int field,int amount);在指定的日历字段的基础上加上amount;如果现在是1月31号,
        // 在month字段上+1,将得到2月28号,如果是闰年则为2月29日,他会对最大值做调整.
        if ("+".equals(operator)) {
            gc.add(GregorianCalendar.DATE, i);

        } else if ("-".equals(operator)) {
            gc.add(GregorianCalendar.MONTH, (-i));
        }
        // date.getTime();方法可以获 得当前系统时间,返回表示时间值的Date  这里添加了(月份减一)
        Date a = gc.getTime();

//        System.out.println(sdf.format(a));
        return sdf.format(a);
    }