Представить сегодняшнюю дату как «Сегодня», а не «дд / мм / гггг» в JSP

#java #jsp #date #jstl

#java #jsp #Дата #jstl

Вопрос:

Учитывая a java.util.Date , каков наилучший способ отображения даты как Today , а не в какой-либо версии dd/mm/yyyy в JSP?

Учитывая будущую дату, я бы все равно хотел, чтобы она отображалась в dd/mm/yyyy формате, но сегодня должна быть представлена как Today .

Ответ №1:

Правильным способом JSP / JSTL было бы использовать JSTL <fmt:formatDate> . Вы можете использовать <jsp:useBean> для создания и размещения a java.util.Date в области страницы.

 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:useBean id="today" class="java.util.Date" />
<fmt:formatDate var="todayString" value="${today}" pattern="dd/MM/yyyy" />
...
<fmt:formatDate var="dateString" value="${bean.date}" pattern="dd/MM/yyyy" />
<p>The date is: ${todayString == dateString ? 'Today' : dateString}</p>
  

Обратите внимание, что я исправил mm быть MM . Это mm означает минуты, MM месяцы. См. Также SimpleDateFormat javadoc.

Ответ №2:

Это сделает:

 <%
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date currentDate  = java.util.Calendar.getInstance().getTime();
Date myDate = someDate;
%>
<%=sdf.format(currentDate).equals(sdf.format(myDate))?"Today":sdf.format(myDate)%>
  

Комментарии:

1. Недостаточно JSTL. Вопрос с тегом OP с помощью JSTL. Скриплеты не поощряются уже десять лет.

Ответ №3:

Вы можете сравнить указанную дату с текущей датой (заданной путем создания нового экземпляра Date(). Помогает ли это?

 DateFormat df = new SimpleDateFormat("dd/mm/yyyy");
Date someDate = df.parse("10/13/2011");

if (someDate.equals(df.parse(new Date())))
  displayDate = "Today";
else
  displayDate = someDate.toString();
  

РЕДАКТИРОВАТЬ: следующие изменения сделают эту работу:

 DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
if (someDate.equals(df.parse(df.format(new Date()))))