Java中时间的计算

最近做项目涉及到时间的计算,这里拿出一个以年为增长的计算,关于日期的计算可以借助Calendar类,其中涉及使用正则去得到字符串中的数字参加计算,顺带一提Pattern类和Matcher类。

Pattern类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数


Matcher类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要 调用 Pattern 对象的matcher 方法来获得一个 Matcher 对象。 

部分代码如下:

    public int inserMaintainHeader(MaintainHeader maintainHeader) {

        maintainHeader.setId(IdGenerateUtil.generateId());
        maintainHeader.setCreateBy("test");
        maintainHeader.setCreateDate(new Date());
        Pattern pattern = Pattern.compile("[^0-9]");
        //这里前端传的值为"1年","2年"...而我们只需要拿到数字1或2去参与计算
        String warrantyPeriod = maintainHeader.getWarrantyPeriod();
        if (StringUtils.isNotBlank(warrantyPeriod)) {
            Matcher matcher = pattern.matcher(warrantyPeriod);
            String yearStr = matcher.replaceAll("");
            int year = Integer.parseInt(yearStr);

            //计算保养计划结束时间
            //1,合格证日期早于开梯日期
            Date qualifiedDate = maintainHeader.getQualifiedDate();//获取合格证日期
            Date ladderDate = maintainHeader.getLadderDate();//获取开梯日期
            Calendar calendar = new GregorianCalendar();
            Date afterDate = new Date();
            if (qualifiedDate.getTime() <= ladderDate.getTime()) {
                calendar.setTime(qualifiedDate);
                calendar.add(calendar.YEAR, year);
                afterDate=calendar.getTime();
                maintainHeader.setPlanEndDate(afterDate);
            }
            //2,合格证日期晚于开梯日期
            if (qualifiedDate.getTime() > ladderDate.getTime()) {
                calendar.setTime(maintainHeader.getInspectPassDate());
                calendar.add(calendar.YEAR, year);
                afterDate=calendar.getTime();
                maintainHeader.setPlanEndDate(afterDate);
            }

        }

        int i = this.dao.insert(maintainHeader);
        return i;
    }

 

你可能感兴趣的:(Java概要)