本文要说jsp中date类型格式化和string类型分割处理

首先说date数据格式化

1、jsp中给date类型数据格式化首先需要引入

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

如果后台带过来的数据是date类型,那就好办了,只要像下面这样用fmt标签就可以了,pattern定义时间的格式

<c:forEach items="${list}" var="m">
<tr height="45">
         <td>${m.userName}</td>
         <td><fmt:formatDate value="${m.time}" pattern="yyyy-MM-dd HH:mm"></fmt:formatDate> </td>
     </tr>
</c:forEach>

如果后台带过来的数据是string类型,那么这样做就会多.0的后缀,这种情况要用到fmt:parseDate标签了,下面这样

<c:forEach items="${list}" var="m">
<fmt:parseDate var="t" value="${m.time}" pattern="yyyy-MM-dd HH:mm"/>
<tr height="45">
         <td>${m.userName}</td>
         <td><fmt:formatDate value="${t}" pattern="yyyy-MM-dd HH:mm"></fmt:formatDate> </td>
     </tr>
</c:forEach>

fmt:parseDate标签的var定义变量名字,这个名字就是fmt:formatDate需要使用的value,两个名字要一致

2、下面说string类型分割处理,需要借助functions库,jsp中要引入

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

我做的那个项目×××号要前六位,中间八位,后面的分三部分分割,银行卡号每四位分割,目的是为了看的更清楚,使用者看这些连续数字,时间长了可能会看错,分割一下会好点

首先要定义一种分割的样式:

.gap tm{ padding-right:5px;}

就用到一个内边距属性,表示的意思是class是gap的标签中的tm标签内边距5px;分割的字符串放到tm标签下就可以达到分割的效果

<c:forEach items="${list}" var="m">
<fmt:parseDate var="t" value="${m.time}" pattern="yyyy-MM-dd HH:mm"/>
<tr height="45">
         <td>${m.userName}</td>
              <td class="gap"><tm>${fn:substring(m.id, 0,6)}</tm><tm>${fn:substring(m.id, 6,14)}</tm><tm>${fn:substring(m.id,14,fn:length(m.id))}</tm></td>
         <td><fmt:formatDate value="${t}" pattern="yyyy-MM-dd HH:mm"></fmt:formatDate> </td>
     </tr>
</c:forEach>

这里假设id就是×××号,fn:substring(a,b,c)方法是截取字符串a,从b截取到c,b和c都是数字,代表字符串对应长度的字符位置,fn:length(a)是表示字符串a的长度

这样就会出现效果

这里有一个重要的提醒就是:为什么使用标签分割而不使用空格&nbsp;这样分割?

这是因为用标签分割的在复制的时候是连续的,用空格分割的就真的分开了,实际使用的时候还要手动去掉空格,造成不必要的麻烦。


再多说一点,如果后台返回的时间是空,上面这种用fmt标签处理不会有问题,如果用js处理这些数据,就有问题了,通常用js处理时间用new Date(time).format("yyyy-MM-dd hh:mm:ss"),字符串类型的时间要是为空,页面就会显示NaN-aN-aN aN:aN这样了,时间类型要是为空了就会显示1970-01-01 08:00计算机格林威治参考时间(我遇到的情况是这样,可能是个别情况),所以在js中处理的时候最好判断一下time是不是为空