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>,测试一下,发现如下错误:
问题出在哪里?
直接改为<fmt:parseDate value="2014-10-10"></fmt:parseDate>可以正常输出,但这样解析出来的时间格式却又不是正确的,fmt:parseDate还有一个属性为var这样可以生成一个临时的变量,如果要输入指定的格式,就可以结合fmt:formatDate标签将想要的结果正确输出出来,代码如下:
如果是嵌套在集合中的字符串,则写法如下:
这里关键是临时变量的使用,对于大部分初学者来说,在页面使用临时变量的情况较少
我们知道,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>
这里关键是临时变量的使用,对于大部分初学者来说,在页面使用临时变量的情况较少
相关文章推荐
- JSTL标签之<fmt:formatDate/>使用介绍
- jstl中时间格式化标签fmt formatDate标签使用
- jstl中关于fmt:parseDate和fmt:formatDate
- <fmt:formatDate>&<fmt:parseDate>的使用方法demo
- JSTL <fmt:formatDate/>
- jstl fmt:formatdate转载
- jstl fmt:formatdate
- el表达式保留两位小数、使用jstl <fmt:formatNumber>标签保留两位小数
- 当JSTL的<fmt:formatDate/>标签不起作用
- jstl fmt:formatDate的输出格式
- jstl fmt:formatdate转载
- jstl fmt:formatdate
- jstl标签的fmt:formatDate格式化日期 String to Date
- JSTL <fmt:formatDate/>
- jstl标签的fmt:formatDate格式化日期 String to Date
- jstl标签的fmt:formatDate格式化日期 String to Date
- JSTL <fmt:formatDate/>
- jsp页显示时间标签JSTL标签 <fmt:formatDate/> 实例大全
- jstl fmt:formatdate转载
- jstl标签的fmt:formatDate格式化日期 String to Date