打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

参考文档: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标签将想要的结果正确输出出来,代码如下:

[html] view plain copy
print?
  1. <fmt:parseDate value="${fn:substringBefore(applicant.socialSecurityLife,',') }" var="date1"></fmt:parseDate>  
  2.         <fmt:formatDate value="${date1 }" pattern="yyyy 年 MM 月 dd 日"/>~  
  3.         <fmt:parseDate value="${fn:substringAfter(applicant.socialSecurityLife,',') }" var="date2"></fmt:parseDate>  
  4.         <fmt:formatDate value="${date2 }" pattern="yyyy 年 MM 月 dd 日"/>  

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

[html] view plain copy
print?
  1. <c:forEach items="${experiences }" var="#expi">  
  2.                 <tr height="35">  
  3.                     <td>  
  4.                     <c:set value="${#expi.start_EndDate }" var="xdate"></c:set>  
  5.                         <fmt:parseDate value="2014-10-10" pattern="yyyy/MM/dd" type="both"></fmt:parseDate>  
  6.                         <fmt:parseDate value="${fn:substringBefore(xdate,'/') }" var="sdate"></fmt:parseDate>  
  7.                         <fmt:formatDate value="${sdate }" pattern="yyyy年MM月"/>  
  8.                         ~  
  9.                         <fmt:parseDate value="${fn:substringAfter(xdate,'/') }" var="edate"></fmt:parseDate>  
  10.                         <fmt:formatDate value="${edate }" pattern="yyyy年MM月"/>  
  11.                     </td>  
  12.                     <td>${#expi.experienceUnit } </td>  
  13.                     <td>${#expi.position } </td>  
  14.                     <td>${#expi.specificExperience } </td>  
  15.                     <td>${#expi.experienceLevel } </td>  
  16.              </tr>  
  17.             </c:forEach>  

这里关键是临时变量的使用,对于大部分初学者来说,在页面使用临时变量的情况较少


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JSTL与Struts的结合(七)
jstl标签的fmt格式化日期 String to Date
JSTL标签的学习与应用记录
JavaScript实现checkbox全选,当只有一个时不起作用的情况也已经解决
jstl fmt功能说明
<fmt:formatDate> 标签 | w3cschool菜鸟教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服