JSTL fmt 格式化时间

使用fmt函数需在jsp中引入 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


<fmt:formatDate value="${item.expDate}" pattern="yyyy-MM-dd"/>
报java.lang.IllegalArgumentException: Cannot convert 20131125 of type class java.lang.String to class java.util.Date 
异常    因为${item.expDate}取出来是String类型,无法转换为Date类型 
如下将能正常输出 
<fmt:formatDate value="<%=new Date() %>" pattern="yyyy-MM-dd"/>


解决办法是,可先将String解析为Date 然后再格式化Date 。

<fmt:parseDate value="${item.expDate}" var="yearMonth" pattern="yyyy-MM-dd"/>


<fmt:formatDate value="${yearMonth}" pattern="yyyy-MM" /><!-- 这里的value只能是date类型-->

<c:>标签介绍:

后台:

      request.setAttribute("today",new Date());

前台:

       <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

       

       <fmt:formatDate value="${today}" />                            //不写type属性,和type="date"等价

       <fmt:formatDate value="${today}" type="time" />        //type的默认值为date

       <fmt:formatDate value="${today}" type="both" />

       <fmt:formatDate value="${today}" dateStyle="short" />

       <fmt:formatDate value="${today}" dateStyle="medium" />           //dateStyle="medium"为缺省值

       <fmt:formatDate value="${today}" dateStyle="long" />

       <fmt:formatDate value="${today}" dateStyle="full" />

       <fmt:formatDate value="${today}" pattern="yyyy/MM/dd  HH:mm:ss" />

       <fmt:formatDate value="${today}" pattern="yyyy/MM/dd  HH:mm:ss" var="d" />

       ${d}

结果: 2010-9-20

        13:03:35

         2010-9-20  13:05:32

         10-9-20

         2010-9-20

         2010年9月20日

         2010年9月20日  星期三

         2010/09/20 13:10:25

         2010/09/20 13:10:56

原文地址:https://www.cnblogs.com/javaboy2018/p/8723602.html