2015-08-28 92 views
0

我必须显示下个月和上个月的第一个日期,有没有什么方法可以使用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"/> 

我无法得到每月的第一天。

+0

检查我的最新编辑 – CrazyProgrammer

回答

1

JSTL只有标记为parseformat的日期,而不是操纵日期。你最好的度假村是EL(那些${}的东西)。由于Servlet 3.0/EL 2.2也支持JSP中的方法表达式。然后您可以使用其他方法Calendar#set()Calendar#add()方法。诚然,这很不好,但正如你所要求的“纯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_MONTHCalendar.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。

相关问题