表达式语言中的日历对象

时间:2011-07-06 19:59:40

标签: java jsp el

如何以表达式语言获取日,月和年(以及每个Calendar.XXXXXXX值)?

${object.calendarObject.MONTH}

2 个答案:

答案 0 :(得分:5)

您可以使用${calendar.time}在EL中获取Date个对象。您可以使用JSTL <fmt:formatDate>Date对象格式化为JSP中的人类可读字符串。它使用SimpleDateFormat封面,并通过pattern属性支持其所有模式。

在下面的示例中,为简洁起见,我假设${cal}是日历。在适用的情况下,将其替换为${object.calendarObject}

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
...
<ul>
  <li>Standard date/time: <fmt:formatDate value="${cal.time}" type="both" /></li>
  <li>Standard date: <fmt:formatDate value="${cal.time}" type="date" /></li>
  <li>Day: <fmt:formatDate value="${cal.time}" pattern="d" /></li>
  <li>Month: <fmt:formatDate value="${cal.time}" pattern="M" /></li>
  <li>Year: <fmt:formatDate value="${cal.time}" pattern="yyyy" /></li>
  <li>dd-MM-yyyy: <fmt:formatDate value="${cal.time}" pattern="dd-MM-yyyy" /></li>
  <li>MM/dd/yyyy: <fmt:formatDate value="${cal.time}" pattern="MM/dd/yyyy" /></li>
</ul>

截至目前,这应该产生类似(英语语言环境,GMT + 1):

  
      
  • 标准日期/时间:2011年7月6日下午10:34:17
  •   
  • 标准日期:2011年7月6日
  •   
  • 日:6
  •   
  • 月:7
  •   
  • 年份:2011
  •   
  • dd-MM-yyyy:06-07-2011
  •   
  • MM / dd / yyyy:07/06/2011
  •   

答案 1 :(得分:2)

您无法直接使用日历对象,可以使用以下getter方法为Calendar对象创建包装器:

public int getMonth(){
    wrappedCalendar.get(Calendar.MONTH);
}
public int getDay(){
    wrappedCalendar.get(Calendar.DAY_OF_MONTH);
}
public int getYear(){
    wrappedCalendar.get(Calendar.YEAR);
}
...

所以你可以使用你的表达语言:

${calWrapper.month}/${calWrapper.day}/${calWrapper.year}