JSTL 中的比较日期无法按预期工作
Compare date in JSTL doesn't work as expected
与以下JSTL
(日期输入来自给定模式的 messages.properties
文件)
<jsp:useBean id="now" class="java.util.Date" />
Current: ${now}<br/>
<c:catch>
<fmt:parseDate value="${tickerBegin}" pattern="yyyy-MM-dd HH:mm:ss" var="tickerBeginDate" />
<fmt:parseDate value="${tickerEnd}" pattern="yyyy-MM-dd HH:mm:ss" var="tickerEndDate" />
</c:catch>
${tickerBegin} parsed to ${tickerBeginDate}<br/>
${tickerEnd} parsed to ${tickerEndDate}<br/>
${tickerEndDate ge nowDate}<br/>
${tickerEndDate.time ge nowDate.time}<br/>
我收到这个输出:
Current: Thu Jun 30 17:05:10 CEST 2016
2016-06-30 14:00:00 parsed to Thu Jun 30 14:00:00 CEST 2016
2017-02-04 03:32:12 parsed to Sat Feb 04 03:32:12 CET 2017
false
false
为什么 none 这些比较会按预期工作?显然,2017 年的任何日期必须大于 2016 年的任何日期?
变量 nowDate
从未在您的代码中定义。尝试
${tickerEndDate ge now}<br/>
${tickerEndDate.time ge now.time}<br/>
与以下JSTL
(日期输入来自给定模式的 messages.properties
文件)
<jsp:useBean id="now" class="java.util.Date" />
Current: ${now}<br/>
<c:catch>
<fmt:parseDate value="${tickerBegin}" pattern="yyyy-MM-dd HH:mm:ss" var="tickerBeginDate" />
<fmt:parseDate value="${tickerEnd}" pattern="yyyy-MM-dd HH:mm:ss" var="tickerEndDate" />
</c:catch>
${tickerBegin} parsed to ${tickerBeginDate}<br/>
${tickerEnd} parsed to ${tickerEndDate}<br/>
${tickerEndDate ge nowDate}<br/>
${tickerEndDate.time ge nowDate.time}<br/>
我收到这个输出:
Current: Thu Jun 30 17:05:10 CEST 2016
2016-06-30 14:00:00 parsed to Thu Jun 30 14:00:00 CEST 2016
2017-02-04 03:32:12 parsed to Sat Feb 04 03:32:12 CET 2017
false
false
为什么 none 这些比较会按预期工作?显然,2017 年的任何日期必须大于 2016 年的任何日期?
变量 nowDate
从未在您的代码中定义。尝试
${tickerEndDate ge now}<br/>
${tickerEndDate.time ge now.time}<br/>