Получить разницу в дате в JSTL - PullRequest
4 голосов
/ 26 января 2012

У меня есть дата, и я хочу показать ее разницу с текущим временем как --year--month--days--hours--minutes--seconds. Как я могу сделать это JSTL? Уверен, что дата будет больше текущей даты и времени.

Ответы [ 3 ]

4 голосов
/ 28 июля 2014

Используя 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).

0 голосов
/ 26 января 2012

Пометить Я не уверен, возможно ли это с помощью JSTL, и одним из способов было бы создать свой собственный тег для обработки этого, как предложено @olly_uk. Лично я не буду использовать какой-либо язык выражений в моей JSP, так как это может также повлиять на читабельность, а не на лучшую практику.

Вы могли бы также иметь эту разницу в вычислениях / датах, когда ваш компонент страницы создан, таким образом, избегая любого EL или нового тега. Это также может иметь свои ограничения, например, я не уверен, что дата, в которую вы хотите проверить разницу, введена пользователем в поле, где вы хотите мгновенно отобразить результат и т. Д., Если вы понимаете, о чем я.

Также еще один вариант, который вы можете попробовать в зависимости от вашего сценария, - это использование jQuery для вычисления и отображения разницы. Я подумал, что я все равно буду связывать эту страницу с SO.

Как узнать количество дней между двумя датами в JavaScript?

JQuery Рассчитать разницу в днях в текстовых полях с двумя датами

Надеюсь, это поможет.

0 голосов
/ 26 января 2012

Не уверен, что есть какие-то встроенные способы сделать это с JSTL. Вы можете написать свою собственную библиотеку тегов или потенциально использовать язык выражений (EL), как показано ниже.

${(dateObj) - (now.time)}

взято из Поиск JSTL Taglib для вычисления секунд между двумя датами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...