您的位置:首页 > Web前端 > JavaScript

jstl中关于fmt:parseDate和fmt:formatDate的综合使用

2014-07-17 11:13 375 查看
参考文档:http://www.ibm.com/developerworks/cn/java/j-jstl0415/

我们知道,java.text.SimpleDateFormate给我们提供了两个非常有用的方法,parse(String)可将字符串转换成日期类型,format(Date)可将日期类型转换为相应格式的时间字符串类型。这里就不贴代码了。

那么,在jsp页面也是可以完成上面的两个转化。现在有一个问题,我要从数据库读出一条数据,格式可为“2014-07-10/2014-10-17”,需求是将这样的字符串改写成如:“2014年7月~2014年10月”的格式。如何用jstl的标签来解决这个简单的问题呢?

同样,jstl给我们提供了<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>这样的一个标签库,其中fmt:parseDate是把字符串解析为日期,fmt:formatDate把日期解析为字符串。似乎这样就可以简单的解决问题了,可是如果只是盲目的从网上copy代码,如,copy代码为:<fmt:parseDate value="2014-10-10" pattern="yyyy/MM/dd"
type="both"></fmt:parseDate>,测试一下,发现如下错误:

javax.servlet.ServletException: javax.servlet.jsp.JspException: In <parseDate>, value attribute can not be parsed: "2014-10-10

问题出在哪里?

直接改为<fmt:parseDate value="2014-10-10"></fmt:parseDate>可以正常输出,但这样解析出来的时间格式却又不是正确的,fmt:parseDate还有一个属性为var这样可以生成一个临时的变量,如果要输入指定的格式,就可以结合fmt:formatDate标签将想要的结果正确输出出来,代码如下:

<fmt:parseDate value="${fn:substringBefore(applicant.socialSecurityLife,',') }" var="date1"></fmt:parseDate>
<fmt:formatDate value="${date1 }" pattern="yyyy 年 MM 月 dd 日"/>~
<fmt:parseDate value="${fn:substringAfter(applicant.socialSecurityLife,',') }" var="date2"></fmt:parseDate>
<fmt:formatDate value="${date2 }" pattern="yyyy 年 MM 月 dd 日"/>


如果是嵌套在集合中的字符串,则写法如下:

<c:forEach items="${experiences }" var="#expi">
<tr height="35">
<td>
<c:set value="${#expi.start_EndDate }" var="xdate"></c:set>
<fmt:parseDate value="2014-10-10" pattern="yyyy/MM/dd" type="both"></fmt:parseDate>
<fmt:parseDate value="${fn:substringBefore(xdate,'/') }" var="sdate"></fmt:parseDate>
<fmt:formatDate value="${sdate }" pattern="yyyy年MM月"/>
~
<fmt:parseDate value="${fn:substringAfter(xdate,'/') }" var="edate"></fmt:parseDate>
<fmt:formatDate value="${edate }" pattern="yyyy年MM月"/>
</td>
<td>${#expi.experienceUnit } </td>
<td>${#expi.position } </td>
<td>${#expi.specificExperience } </td>
<td>${#expi.experienceLevel } </td>
</tr>
</c:forEach>


这里关键是临时变量的使用,对于大部分初学者来说,在页面使用临时变量的情况较少
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: