Используя 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>
<%--[...]--%>
Примечание:
В вашей проблемной области программного обеспечения, если имеет смысл говорить о днях и месяцах в календарном порядке, возможно, вам следует это выразить в Модель домена . Если нет, то, по крайней мере, вам следует воспользоваться другим более низким уровнем программного обеспечения для предоставления этой информации (и, например, с помощью API java.util.Calendar или Joda-Time).