开发者社区> 问答> 正文

JAVA中的日期比较问题

JAVA中的日期用Date.before()和Date.after(),还是直接Date.getTime比较,哪个好?

展开
收起
蛮大人123 2016-03-06 15:55:48 2958 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪
    public boolean before(Date when) {
        return getMillisOf(this) < getMillisOf(when);
    }
    
    public boolean after(Date when) {
        return getMillisOf(this) > getMillisOf(when);
    }
    
    public long getTime() {
        return getTimeImpl();
    }
    
    private final long getTimeImpl() {
        if (cdate != null && !cdate.isNormalized()) {
            normalize();
        }
        return fastTime;
    }
    
    static final long getMillisOf(Date date) {
        if (date.cdate == null || date.cdate.isNormalized()) {
            return date.fastTime;
        }
        BaseCalendar.Date d = (BaseCalendar.Date) date.cdate.clone();
        return gcal.getTime(d);
    }
    
    private final BaseCalendar.Date normalize() {
        if (cdate == null) {
            BaseCalendar cal = getCalendarSystem(fastTime);
            cdate = (BaseCalendar.Date) cal.getCalendarDate(fastTime, TimeZone.getDefaultRef());
            return cdate;
        }
        if (!cdate.isNormalized()) {
            cdate = normalize(cdate);
        }
        TimeZone tz = TimeZone.getDefaultRef();
        if (tz != cdate.getZone()) {
            cdate.setZone(tz);
            CalendarSystem cal = getCalendarSystem(cdate);
            cal.getCalendarDate(fastTime, cdate);
        }
        return cdate;
    }

    看起来 before 和 after 会稍微快一点点。不过也有的 Java 实现里面 before 和 after 就是调用 getTime() `的。

    2019-07-17 18:54:47
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载