0

我什至不知道这是否可能,但我正在尝试比较两个日期。我正在尝试检查是否date1等于date2 + 1.

示例代码:

<s:if test="%{beginDate.equal(endDate+1)}">
  ...
</s:if>

有没有办法增加endDate比较它们?

4

1 回答 1

0

以下更多的是一种解决方法,因为它需要更改您的操作类以及您的 JSP 文件。此外,它会要求您将 aSimpleDateFormat应用于您的日期,以便在比较中仅使用日、月和年 - 我假设您不想比较小时、分钟、秒,因为您的检查将非常准确。

在您的 JSP 中更改endDatetoformattedEndDatebeginDateto :formattedBeginDate

<s:if test="%{formattedBeginDate.equal(formattedEndDate)}">
...
</s:if>

在您的操作类中处理格式化日期以仅使用年、月和日。还要处理增加结束日期:

//Specified in your member variable declarations.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
...

public Date getFormattedEndDate() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(this.getEndDate());
    cal.add(Calendar.DATE, 1); //minus number would decrement the days
    return format.parse(cal.getTime());
}

public Date getFormattedBeginDate() {
    return format.parse(this.getBeginDate());
}

这只是一种方法。您当然可以将方法重命名为对您有意义的任何名称。

另一种选择 更简单的方法可能是在您的操作类中创建一个为您进行此日期比较的方法:

public Date isDatesOk() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(this.getEndDate());
    cal.add(Calendar.DATE, 1); //minus number would decrement the days
    Date formattedEndDate = format.parse(cal.getTime());

    cal.setTime(this.getBeginDate());
    Date formattedBeginDate = format.parse(cal.getTime());

    return formattedEndDate.equals(formattedBeginDate);
}

对于您的 JSP:

<s:if test="${datesOk}">
...
</s:if>
于 2013-06-18T14:40:03.173 回答