增加Struts中的日期

时间:2013-06-17 21:37:58

标签: date struts2

我甚至不知道这是否可行,但我试图比较一个支柱中的两个日期。我正在尝试检查date1是否等于date2 + 1

示例代码:

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

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

1 个答案:

答案 0 :(得分:0)

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

在您的JSP中将endDate更改为formattedEndDate并将beginDate更改为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>