我甚至不知道这是否可行,但我试图比较一个支柱中的两个日期。我正在尝试检查date1
是否等于date2 + 1
。
示例代码:
<s:if test="%{beginDate.equal(endDate+1)}">
...
</s:if>
有没有办法增加endDate
来比较它们?
答案 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>