[英]Get date difference in jstl
我有一个约会,并希望显示它与当前时间的差异为--year--month--days--hours--minutes--seconds
。 我该怎么做这个jstl? 确定日期将大于当前日期时间。
使用JSTL你可以做一些代码体操,如:
<jsp:useBean id="now" class="java.util.Date" />
<fmt:parseNumber
value="${(now.time - otherDate.time) / (1000*60*60*24) }"
integerOnly="true" /> day(s) passed between given dates.
但正如代码所暗示的那样,这给出了整体差异,而且几乎不可能成为“日历意识”的做法。 即你不能说:“ 自其他日期过去3年,1个月和2天 ”。
这个“天过去......”风格的另一个例子,使用JSP标签并使用“今天/昨天/天后”演示:
<%--[...]--%>
<%@attribute name="otherDate" required="true" type="java.util.Date"%>
<jsp:useBean id="now" class="java.util.Date" scope="request"/>
<fmt:parseNumber
value="${ now.time / (1000*60*60*24) }"
integerOnly="true" var="nowDays" scope="request"/>
<fmt:parseNumber
value="${ otherDate.time / (1000*60*60*24) }"
integerOnly="true" var="otherDays" scope="page"/>
<c:set value="${nowDays - otherDays}" var="dateDiff"/>
<c:choose>
<c:when test="${dateDiff eq 0}">today</c:when>
<c:when test="${dateDiff eq 1}">yesterday</c:when>
<c:otherwise>${dateDiff} day(s) ago</c:otherwise>
<%--[...]--%>
注意:
在您的软件问题域中,如果以日历方式谈论日期和月份是有意义的,可能您应该在域模型中表达。 如果没有,至少你应该受益于使用另一个较低的软件层来提供这些信息(例如使用java.util.Calendar或Joda-Time API)。
不确定使用JSTL有任何内置的方法。 您可以编写自己的标记库,也可以使用下面的表达式语言(EL)。
${(dateObj) - (now.time)}
Mark我不确定这是否可以使用JSTL,一种方法是创建自己的自定义标签来处理这个@olly_uk建议。 我个人不会在我的JSP上使用任何表达式语言,因为这可能也会影响可读性而不是最佳实践。
构建页面bean时,您也可以使用此计算/日期差异,这样可以避免任何EL或新标记。 这也可能有其局限性,例如我不确定用户是否在想要立即显示结果的字段上输入您要检查差异的日期等等,如果您看到我的意思。
还有另外一个你可以尝试,取决于你的场景是使用jQuery来计算和显示差异,我想我会从SO链接这个页面。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.