posts - 20,comments - 6,trackbacks - 0
          以前老師的。
          轉來。
          -----------------

          JSP開發時, 在頁面中格式化和解析日期始終是個頭疼的事情. 可以用JSTL和JavaScript搞定.

          1. JSTL格式化和解析日期

          格式化日期:

          <fmt:formatDate value="${model.date}" pattern ="yyyy-MM-dd" > 

          或者 

          <fmt:formatDate value="<%=new java.util.Date() %>" pattern ="yyyy-MM-dd" /> 

          取得request參數: 

          <c:out value="param.參數名"/> 

          jstl格式化日期標簽收藏
          <%@ 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>
          <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:    
          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. 
          <fmt:formatDate value="${date}" type="both"/> 

          2004-4-1 13:30:00  
          <fmt:formatDate value="${isoDate}" type="both"/> 

          2004-5-31 23:59:59  
          Attribute: type; optional. Indicates what to print: date, time, or both. 
          <fmt:formatDate value="${date}" type="date"/> 

          2004-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"/> 

          2004-5-31  
          <fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/> 

          04-5-31  
          <fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/> 

          2004-5-31  
          <fmt:formatDate value="${isoDate}" type="date" dateStyle="long"/> 

          2004年5月31日  
          <fmt:formatDate value="${isoDate}" type="date" dateStyle="full"/> 

          2004年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  
          Attribute: pattern; optional. Inidcates date
          /time custom patterns. 
          <fmt:formatDate value="${date}" type="both" pattern="EEEE, MMMM d, yyyy HH:mm:ss Z"/> 

          星期四, 四月 
          12004 13:30:00 -0600  
          <fmt:formatDate value="${isoDate}" type="both" pattern="d MMM yy, h:m:s a zzzz/> 


          2. JavaScript 格式化

          /*
            將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>0return y + '-+ m + '-+ d + ' ' + h + ':' + i + ':' + s + '.' + ms;
              
          if(h>0 || i>0 || s>0return y + '-+ m + '-+ d + ' ' + h + ':' + i + ':' + s;
              
          return y + '-+ m + '-+ d;
            }

            
          return '';
          }
          posted on 2009-03-27 09:29 Johnhe 閱讀(2468) 評論(0)  編輯  收藏 所屬分類: javascript
          主站蜘蛛池模板: 襄汾县| 陈巴尔虎旗| 宁明县| 泰宁县| 前郭尔| 台山市| 霍邱县| 沂源县| 辛集市| 德惠市| 海口市| 湾仔区| 西盟| 青铜峡市| 澎湖县| 忻州市| 香港| 东光县| 杨浦区| 阜阳市| 巴林左旗| 奉化市| 达拉特旗| 峨边| 九龙坡区| 阜阳市| 巴青县| 上栗县| 陇川县| 龙岩市| 永仁县| 阿鲁科尔沁旗| 泊头市| 衡东县| 扶风县| 张北县| 淳安县| 贵溪市| 五莲县| 广丰县| 安徽省|