(java) JAVA中的日期比较问题

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

根据 OpenJDK 7 的源代码:

public boolean beforeDate when { return getMillisOfthis < getMillisOfwhen;
} public boolean afterDate when { return getMillisOfthis > getMillisOfwhen;
} public long getTime { return getTimeImpl;
} private final long getTimeImpl { if cdate != null && !cdate.isNormalized { normalize; } return fastTime;
} static final long getMillisOfDate date { if date.cdate == null || date.cdate.isNormalized { return date.fastTime; } BaseCalendar.Date d = BaseCalendar.Date date.cdate.clone; return gcal.getTimed;
} private final BaseCalendar.Date normalize { if cdate == null { BaseCalendar cal = getCalendarSystemfastTime; cdate = BaseCalendar.Date cal.getCalendarDatefastTime, TimeZone.getDefaultRef; return cdate; } if !cdate.isNormalized { cdate = normalizecdate; } TimeZone tz = TimeZone.getDefaultRef; if tz != cdate.getZone { cdate.setZonetz; CalendarSystem cal = getCalendarSystemcdate; cal.getCalendarDatefastTime, cdate; } return cdate;
}

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注