2009-03-26 13:42 BeanSoft

JSP开发时, 在页面中格式化和解析日期始终是个头疼的事情. 可以用JSTL和JavaScript搞定.

  1. JSTL格式化和解析日期

格式化日期:

或者 取得request参数: jstl格式化日期标签收藏 JSP Standard Tag Libraries Formatting and Internationalization Two form input parameters, ‘date’ and ‘isoDate’, are URL-encoded in the link leading to this page. ‘isoDate’ is formatted according to the ISO8601 standard. Formatting of numbers and dates is based on the browser’s locale setting. Formatting will change if you switch the default language setting from English to French or German, for example. (The browser needs to be restarted, too.) Library import and parameter capturing: <%@ taglib prefix="c" uri="<http://java.sun.com/jstl/core"> %> <%@ taglib prefix="fmt" uri="<http://java.sun.com/jstl/fmt"> %> <fmt:parseDate value="${param.date}" var="date" pattern="yyyy/MM/dd:HH:mm:ss> The input parameters must match the patterns, or the JSP will thrown an exception. This page does no error handling. Input parameters: Date:    2004/04/01:13:30:00   Java format: Thu Apr 01 13:30:00 CST 2004 isoDate: 20040531T235959       Java format: Mon May 31 23:59:59 CDT 2004 Dates Tag Output Attribute: value; required. Tag has no body. 2004-4-1 13:30:00  2004-5-31 23:59:59  Attribute: type; optional. Indicates what to print: date, time, or both. 2004-4-1  23:59:59  Attribute: dateStyle; optional. Varies the date format. 2004-5-31  04-5-31  2004-5-31  2004年5月31日  2004年5月31日 星期一  Attribute: timeStyle; optional. Varies the time format. 23:59:59  下午11:59  23:59:59  下午11时59分59秒  下午11时59分59秒 CDT  Attribute: pattern; optional. Inidcates date/time custom patterns. 星期四, 四月 1, 2004 13:30:00 -0600  <fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/>   2. JavaScript 格式化 来源: [http://gwbasic.javaeye.com/blog/36904](http://gwbasic.javaeye.com/blog/36904 "http://gwbasic.javaeye.com/blog/36904")   /*   将String类型解析为Date类型.   parseDate(‘2006-1-1’) return new Date(2006,0,1)   parseDate(‘ 2006-1-1 ‘) return new Date(2006,0,1)   parseDate(‘2006-1-1 15:14:16’) return new Date(2006,0,1,15,14,16)   parseDate(‘ 2006-1-1 15:14:16 ‘) return new Date(2006,0,1,15,14,16);   parseDate(‘2006-1-1 15:14:16.254’) return new Date(2006,0,1,15,14,16,254)   parseDate(‘ 2006-1-1 15:14:16.254 ‘) return new Date(2006,0,1,15,14,16,254)   parseDate(‘不正确的格式’) retrun null */ function parseDate(str){   if(typeof str == ‘string’){     var results = str.match(/^ \*(d{4})-(d{1,2})-(d{1,2}) \*$/);     if(results && results.length>3)       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]));     results = str.match(/^ \*(d{4})-(d{1,2})-(d{1,2}) +(d{1,2}):(d{1,2}):(d{1,2}) \*$/);     if(results && results.length>6)       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]));     results = str.match(/^ \*(d{4})-(d{1,2})-(d{1,2}) +(d{1,2}):(d{1,2}):(d{1,2}).(d{1,9}) \*$/);     if(results && results.length>7)       return new Date(parseInt(results[1]),parseInt(results[2]) -1,parseInt(results[3]),parseInt(results[4]),parseInt(results[5]),parseInt(results[6]),parseInt(results[7]));   }   return null; } /*   将Date/String类型,解析为String类型.   传入String类型,则先解析为Date类型   不正确的Date,返回 ”   如果时间部分为0,则忽略,只返回日期部分. */ function formatDate(v){   if(typeof v == ‘string’) v = parseDate(v);   if(v instanceof Date){     var y = v.getFullYear();     var m = v.getMonth() + 1;     var d = v.getDate();     var h = v.getHours();     var i = v.getMinutes();     var s = v.getSeconds();     var ms = v.getMilliseconds();       if(ms>0) return y + ‘-‘ + m + ‘-‘ + d + ‘ ‘ + h + ‘:’ + i + ‘:’ + s + ‘.’ + ms;     if(h>0 || i>0 || s>0) return y + ‘-‘ + m + ‘-‘ + d + ‘ ‘ + h + ‘:’ + i + ‘:’ + s;     return y + ‘-‘ + m + ‘-‘ + d;   }   return ”; } 转载请注明:[WebLogic Android 博客](http://www.beansoft.biz) » [收集整理: JavaScript格式化和解析日期, JSTL格式化和解析日期](http://www.beansoft.biz/2009/03/26/%e6%94%b6%e9%9b%86%e6%95%b4%e7%90%86-javascript%e6%a0%bc%e5%bc%8f%e5%8c%96%e5%92%8c%e8%a7%a3%e6%9e%90%e6%97%a5%e6%9c%9f-jstl%e6%a0%bc%e5%bc%8f%e5%8c%96%e5%92%8c%e8%a7%a3%e6%9e%90%e6%97%a5%e6%9c%9f/)