原创

JSTL 格式化时间计算时差

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的;下面简单介绍一下时间差的应用。


引入部分JSLT标签库如下:

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

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


时间是字符串的处理如下:

<c:set var="dateStr"value="2014-11-19 11:15:11"/>

页面输出>>2014-11-19 11:15:11


转化为时间类型(Date对象)如下:

<fmt:parseDate var="nowDate" value="${dateStr}"pattern="yyyy-MM-dd HH:mm:ss"/>

页面输出>>Wed Nov 19 11:15:11 CST 2014


计算时间差

<c:set var="ztime"value="${endDate.time - startDate.time}"/>

时间间隔为毫秒${ztime}

转化为分钟如下:

<fmt:formatNumber value="${ztime/1000/60}"pattern="#0.0"/>


其他时间转化,具体如下:

<fmt:parseDate value="${param.date}" var="date" pattern="yyyy/MM/dd:HH:mm:ss>
<fmt:parseDate value="${param.isoDate}" var="isoDate" pattern="yyyyMMdd'T'HHmmss">

The input parameters must match the patterns, or the JSP will thrown an exception. This page does no error handling.

Input parameters:
Date:    2014/04/01:13:30:00   Java format: Thu Apr 01 13:30:00 CST 2014
isoDate: 20140531T235959       Java format: Mon May 31 23:59:59 CDT 2014

Dates
Tag Output
Attribute: value; required. Tag has no body.
<fmt:formatDate value="${date}" type="both"/>
 2014-4-1 13:30:00 
 
<fmt:formatDate value="${isoDate}" type="both"/>
 2014-5-31 23:59:59 
 
Attribute: type; optional. Indicates what to print: date, time, or both.
<fmt:formatDate value="${date}" type="date"/>
 2014-4-1 
 
<fmt:formatDate value="${isoDate}" type="time"/>
 23:59:59 
 
Attribute: dateStyle; optional. Varies the date format.
<fmt:formatDate value="${isoDate}" type="date" dateStyle="default"/>
 2014-5-31 
 
<fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/>
 14-5-31 
 
<fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/>
 2014-5-31 
 
<fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/>
 2014年5月31日 
 
<fmt:formatDate value="${isoDate}" type="date" dateStyle="full"/>
 2014年5月31日 星期一 
 
Attribute: timeStyle; optional. Varies the time format.
<fmt:formatDate value="${isoDate}" type="time" timeStyle="default"/>
23:59:59 

<fmt:formatDate value="${isoDate}" type="time" timeStyle="short"/>
下午11:59 

<fmt:formatDate value="${isoDate}" type="time" timeStyle="medium"/>
23:59:59 

<fmt:formatDate value="${isoDate}" type="time" timeStyle="long"/>
 下午11时59分59秒 

<fmt:formatDate value="${isoDate}" type="time" timeStyle="full"/>
下午11时59分59秒 CDT 

<fmt:formatDate value="${isoDate}" pattern= "MM/dd/yyyy HH:mm aa" type="time" timeStyle="full"/>
05/31/2014 21:09 下午

Attribute: pattern; optional. Inidcates date/time custom patterns.
<fmt:formatDate value="${date}" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/>
 星期四, 四月 1, 2014 13:30:00 -0600 

<fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/>
 31 五月 14, 11:59:59 下午中央夏令时


格式模式如下:

d   月中的某一天。一位数的日期没有前导零。   
dd   月中的某一天。一位数的日期有一个前导零。   
ddd   周中某天的缩写名称,在AbbreviatedDayNames中定义。   
dddd   周中某天的完整名称,在DayNames中定义。   
M   月份数字。一位数的月份没有前导零。   
MM   月份数字。一位数的月份有一个前导零。   
MMM   月份的缩写名称,在AbbreviatedMonthNames中定义。   
MMMM   月份的完整名称,在MonthNames中定义。   
y   不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。   
yy   不包含纪元的年份。如果不包含纪元的年份小于10,则显示具有前导零的年份。   
yyyy   包括纪元的四位数的年份。   
gg   时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。   
h   12   小时制的小时。一位数的小时数没有前导零。   
hh   12   小时制的小时。一位数的小时数有前导零。   
H   24   小时制的小时。一位数的小时数没有前导零。   
HH   24   小时制的小时。一位数的小时数有前导零。    
m   分钟。一位数的分钟数没有前导零。   
mm   分钟。一位数的分钟数有一个前导零。   
s   秒。一位数的秒数没有前导零。   
ss   秒。一位数的秒数有一个前导零。


~阅读全文-人机检测~

微信公众号“Java精选”(w_z90110),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信