在 JSTL 中获取下个月和上个月的第一天
Get first day of next and previous month in JSTL
我必须显示下个月和上个月的第一个日期,有什么方法可以使用 JSTL 获取它。纯JSTL优先
我可以得到明天如下。
<jsp:useBean id="ourDate" class="java.util.Date"/>
<jsp:setProperty name="ourDate" property="time" value="${ourDate.time + 86400000}"/>
<fmt:formatDate value="${ourDate}" pattern="dd/MM/yyyy"/>
我无法获取月份的第一天。
JSTL 只有 parse and format 日期的标签,不能操纵日期。你最好的选择是 EL(那些 ${}
东西)。从 Servlet 3.0 / EL 2.2 开始,它也支持 JSP 中的方法表达式。然后您可以使用 Calendar#set()
和 Calendar#add()
方法。没错,这很老套,但正如您所要求的 "pure JSTL",这是您能得到的最好的。
<jsp:useBean id="firstDayOfMonth" class="java.util.GregorianCalendar">
${firstDayOfMonth.set(5,1)}
</jsp:useBean>
<jsp:useBean id="firstDayOfPreviousMonth" class="java.util.GregorianCalendar">
${firstDayOfPreviousMonth.set(5,1)}
${firstDayOfPreviousMonth.add(2,-1)}
</jsp:useBean>
<jsp:useBean id="firstDayOfNextMonth" class="java.util.GregorianCalendar">
${firstDayOfNextMonth.set(5,1)}
${firstDayOfNextMonth.add(2,1)}
</jsp:useBean>
(这些表达式仅用于嵌套在 <jsp:useBean>
内的自我记录目的,它们可以放在外面,但对于初学者来说可能更令人困惑;第一个参数(5
resp. 2
) 是常量字段 Calendar.DAY_OF_MONTH
和 Calendar.MONTH
)
的值
现在您可以通过 Calendar#getTime()
以通常的方式展示它们:
<fmt:formatDate value="${firstDayOfMonth.time}" pattern="dd/MM/yyyy"/>
<fmt:formatDate value="${firstDayOfPreviousMonth.time}" pattern="dd/MM/yyyy"/>
<fmt:formatDate value="${firstDayOfNextMonth.time}" pattern="dd/MM/yyyy"/>
如果您还没有使用 EL 2.2,那么最好的办法是在 servlet 中准备它们。
我必须显示下个月和上个月的第一个日期,有什么方法可以使用 JSTL 获取它。纯JSTL优先
我可以得到明天如下。
<jsp:useBean id="ourDate" class="java.util.Date"/>
<jsp:setProperty name="ourDate" property="time" value="${ourDate.time + 86400000}"/>
<fmt:formatDate value="${ourDate}" pattern="dd/MM/yyyy"/>
我无法获取月份的第一天。
JSTL 只有 parse and format 日期的标签,不能操纵日期。你最好的选择是 EL(那些 ${}
东西)。从 Servlet 3.0 / EL 2.2 开始,它也支持 JSP 中的方法表达式。然后您可以使用 Calendar#set()
和 Calendar#add()
方法。没错,这很老套,但正如您所要求的 "pure JSTL",这是您能得到的最好的。
<jsp:useBean id="firstDayOfMonth" class="java.util.GregorianCalendar">
${firstDayOfMonth.set(5,1)}
</jsp:useBean>
<jsp:useBean id="firstDayOfPreviousMonth" class="java.util.GregorianCalendar">
${firstDayOfPreviousMonth.set(5,1)}
${firstDayOfPreviousMonth.add(2,-1)}
</jsp:useBean>
<jsp:useBean id="firstDayOfNextMonth" class="java.util.GregorianCalendar">
${firstDayOfNextMonth.set(5,1)}
${firstDayOfNextMonth.add(2,1)}
</jsp:useBean>
(这些表达式仅用于嵌套在 <jsp:useBean>
内的自我记录目的,它们可以放在外面,但对于初学者来说可能更令人困惑;第一个参数(5
resp. 2
) 是常量字段 Calendar.DAY_OF_MONTH
和 Calendar.MONTH
)
现在您可以通过 Calendar#getTime()
以通常的方式展示它们:
<fmt:formatDate value="${firstDayOfMonth.time}" pattern="dd/MM/yyyy"/>
<fmt:formatDate value="${firstDayOfPreviousMonth.time}" pattern="dd/MM/yyyy"/>
<fmt:formatDate value="${firstDayOfNextMonth.time}" pattern="dd/MM/yyyy"/>
如果您还没有使用 EL 2.2,那么最好的办法是在 servlet 中准备它们。