Skip to content
This repository has been archived by the owner on Aug 20, 2021. It is now read-only.

日期扩展 DateExtensionUtil

feilong edited this page Nov 26, 2016 · 3 revisions

和 DateUtil 的区别:

DateUtil 是纯操作Date API的工具类,而 DateExtensionUtil 类 用于个性化输出结果,针对业务个性化显示.

主要由下面3部分组成:

DateExtensionUtil

1.格式化输出两个时间差

方法 Description
formatDuration(Date) 将开始时间 beginDate 到当前时间 new Date(),两日期之间的绝对值间隔,格式化成直观的表示方式.
formatDuration(Date, Date) 将beginDate和 endDate 两日期之间的绝对值间隔,格式化成直观的表示方式.
formatDuration(long) 将间隔毫秒数 spaceMilliseconds,格式化成直观的表示方式.

在日常开发中,我们经常要计算某个方法执行的时间(耗时时间)

比如以下代码:

    public static void main(String[] args) {
        SensitivewordFilter filter = new SensitivewordFilter();
        String string = "太多的伤感情怀也许只局限于饲养基地 荧幕中的情节,主人公尝试着去用某种方式渐渐的很潇洒地释自杀指南怀那些自己经历的伤感。"
                + "然后 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪,"
                + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个人一杯红酒一部电影在夜三级片 深人静的晚上,关上电话静静的发呆着。";
        long beginTime = System.currentTimeMillis();
        Set<String> set = filter.getSensitiveWord(string, 1);
        System.out.println("总共消耗时间为:" + (System.currentTimeMillis() - beginTime));
    }

输出 53259

可以重构成

    public static void main(String[] args){
        Date beginDate = new Date();

        SensitivewordFilter filter = new SensitivewordFilter();
        String string = "太多的伤感情怀也许只局限于饲养基地 荧幕中的情节,主人公尝试着去用某种方式渐渐的很潇洒地释自杀指南怀那些自己经历的伤感。" + "然后 我们的扮演的角色就是跟随着主人公的喜红客联盟 怒哀乐而过于牵强的把自己的情感也附加于银幕情节中,然后感动就流泪," + "难过就躺在某一个人的怀里尽情的阐述心扉或者手机卡复制器一个人一杯红酒一部电影在夜三级片 深人静的晚上,关上电话静静的发呆着。";

        Set<String> set = filter.getSensitiveWord(string, 1);

        System.out.println("语句中包含敏感词的个数为:" + set.size() + "。包含:" + set);
        System.out.println("总共消耗时间为:" + DateExtensionUtil.getIntervalForView(beginDate));
    }

输出 53秒259毫秒

代码简单,而且还是输出成中文容易阅读的格式

2.获得两个时间差间隔

方法 Description
getIntervalWeek(Date, Date) 获得相差的星期数(绝对值).
getIntervalDay(Date, Date) 计算两个时间相差的的天数(绝对值).
getIntervalHour(Date, Date) 两个时间相差的的小时数(绝对值).
getIntervalMinute(Date, Date) 两个时间相差的分钟(绝对值).
getIntervalSecond(Date, Date) 两个时间相差的秒数(绝对值).
getIntervalTime(Date, Date) 两个时间相差的毫秒数 (绝对值).

比如下列代码,

// 5.判断时间是否在规定期内,目前先设置2小时过期。如过期则返回告诉用户请求已过期,请重新申请
long currentTime = System.currentTimeMillis();
long inteval = currentTime - emailCheck.getModifyTime().getTime();
if (inteval > EmailCheck.EFFECT_TIME){// 过期设置无效
    emailCheckManager.updateEmailCheckStatusById(emailCheck.getId(), EmailCheck.STATUS_INVALID_USED);
    return MemberDefaultConstant.VIEW_MEMBER_LINK_INVALID;
}

可以优化成

// 5.判断时间是否在规定期内,目前先设置2小时过期。如过期则返回告诉用户请求已过期,请重新申请
if (DateExtensionUtil.getIntervalTime(new Date(), emailCheck.getModifyTime()) > EmailCheck.EFFECT_TIME){// 过期设置无效
    emailCheckManager.updateEmailCheckStatusById(emailCheck.getId(), EmailCheck.STATUS_INVALID_USED);
    return MemberDefaultConstant.VIEW_MEMBER_LINK_INVALID;
}

3.用来做报表的辅助方法

方法 Description
getResetTodayAndTomorrow() 获得重置清零的今天和明天,当天 00:00:00.000下一天 00:00:00.000.
getResetYesterdayAndToday() 获得重置清零的昨天和今天,昨天 00:00:00.000当天 00:00:00.000.