需要 Java 日期比较帮助



我正在尝试比较两个日期。这是我的日期比较代码...

Date dbLastModified = getBulletinBarMessageLastModified();
Date bulletinBarMessageLastModified = bulletinBarForm.getLastModified();
if (dbLastModified.after(bulletinBarMessageLastModified)){
    throw new ReportingManagerOptimisticLockingException(optimisticLockingMessage);
}
public Date getBulletinBarMessageLastModified() {
    Timestamp lastModifiedTimestamp = getJdbcTemplate().queryForObject(BULLETIN_BAR_MSG_LAST_MODIFIED_SQL,Timestamp.class);
    Date lastModifiedDate = new Date(lastModifiedTimestamp.getTime());
    return lastModifiedDate;
}

dbLastModified  - Tue Apr 01 22:29:04 EST 2014
bulletinBarMessageLastModified  - Tue Apr 01 22:29:04 EST 2014

我很困惑为什么即使某些日期看起来相等(例如这两个),为什么我的代码会抛出ReportingManagerOptimisticLockingException异常,暗示一个在另一个之后。我对日期比较的理解是错误的吗?

Timestamp.getTime()也考虑纳。因此,即使toString()返回相同的输出,实际上也存在纳米差异。

java.util.Date只处理毫秒

这里

您可以阅读以下内容:

公共布尔值之后(日期时间)

Tests if this date is after the specified date.
Parameters:
    when - a date. 
Returns:
    true if and only if the instant represented by this Date object is strictly later than the instant represented by when; false

否则。 抛出: NullPointerException - 如果 when 为 null。

现在,它要么是一个Java错误,要么dbLastModified真的是在几纳秒内bulletinBarMessageLastModified之后。

如果false以下内容:

dbLastModified.after(dbLastModified)

那么它可能不是一个Java错误,但碰巧第二个日期是在第一个日期之后,有几纳秒。

相关内容

  • 没有找到相关文章

最新更新