隨筆 - 5, 文章 - 0, 評(píng)論 - 20, 引用 - 0
          數(shù)據(jù)加載中……

          處理一些和日期有關(guān)的動(dòng)作

          /*
          -------------------------------------------------------------------------------
          文件名稱:date.js
          說(shuō)    明:JavaScript腳本,處理一些和日期有關(guān)的動(dòng)作
          版    本:1.0
          修改紀(jì)錄:
          ---------------------------------------------------------------------------
          時(shí)間        修改人      說(shuō)明
          2005-4-20   zhouming        創(chuàng)建
          -------------------------------------------------------------------------------    
          */


          /*
          用途:把日期從一種格式轉(zhuǎn)換為另一種格式
          輸入:date:日期;fmt1:原來(lái)的格式;fmt2 轉(zhuǎn)換成的格式
          返回:fmt2格式的日期
          格式:年:yyyy   月:MM  日:dd
                      時(shí):HH   分:mm  秒:ss
          */
          function dateFormat( date, fmt1,fmt2) {
              if (isFormatDate( date, fmt1)) {
                 if (fmt2.indexOf("yyyy")!=-1&&fmt2.indexOf("MM")!=-1&&fmt2.indexOf("dd")!=-1){
                  //設(shè)置日期
                        var retDate = setDate( date, fmt1,fmt2);
               if (fmt2.indexOf("HH")!=-1&&fmt2.indexOf("mm")!=-1&&fmt2.indexOf("ss")!=-1){
                  //設(shè)置時(shí)間
               retDate = setTime(date, fmt1,retDate);
                 }
               return retDate;
              }
              else {
                   alert("日期格式錯(cuò)誤");
              }
              }
              else {
                  alert("日期格式錯(cuò)誤");
              }
              return "";
          }

           

          /*
          用途:判斷是否是日期
          輸入:date:日期;fmt:日期格式
          返回:如果通過(guò)驗(yàn)證返回true,否則返回false
          */
          function isFormatDate( date, fmt) {
              var yIndex = fmt.indexOf("yyyy");
              if(yIndex==-1) return false;
             var year = date.substring(yIndex,yIndex+4);
             var mIndex = fmt.indexOf("MM");
              if(mIndex==-1) return false;
             var month = date.substring(mIndex,mIndex+2);
             var dIndex = fmt.indexOf("dd");
              if(dIndex==-1) return false;
             var day = date.substring(dIndex,dIndex+2);
              if(!isNumber(year)||year>"2100" || year< "1900") return false;
              if(!isNumber(month)||month>"12" || month< "01") return false;
              if(day>getMaxDay(year,month) || day< "01") return false;
              return true;
          }

          //取得某個(gè)月的最大天數(shù)
          function getMaxDay(year,month) {
              if(month==4||month==6||month==9||month==11)
                  return "30";
              if(month==2)
                  if(year%4==0&&year%100!=0 || year%400==0)
                      return "29";
                  else
                      return "28";
              return "31";
          }

          function isNumber( str ){ 
              var regu = /^(\d+)$/;
                  return regu.test(str);
          }

          function setDate( date, fmt1,fmt2) {
                  var yIndex = fmt1.indexOf("yyyy");
                  var year = date.substring(yIndex,yIndex+4);
                  var mIndex = fmt1.indexOf("MM");
                  var month = date.substring(mIndex,mIndex+2);
                  var dIndex = fmt1.indexOf("dd");
                  var day = date.substring(dIndex,dIndex+2);
                  var retDate = fmt2;
                  retDate = retDate.replace(/yyyy/i,year);
                  retDate = retDate.replace(/MM/i,month);
                  retDate = retDate.replace(/dd/i,day);
                  return retDate ;
          }

          function setTime( date, fmt1,retDate) {
                  var hour ="00";
                  var min ="00";
                  var sec ="00";
                  var hIndex = fmt1.indexOf("HH");
                  var mIndex = fmt1.indexOf("mm");
                  var sIndex = fmt1.indexOf("ss");
                  if(sIndex!=-1&&hIndex!=-1&&mIndex!=-1) {
             sec = date.substring(sIndex,sIndex+2);
             min = date.substring(mIndex,mIndex+2);
             hour = date.substring(hIndex,hIndex+2);
             if(!isNumber(hour)||hour>"23" || hour< "00") {alert("日期格式錯(cuò)誤"); return ""};
             if(!isNumber(min)||min>"59" || min< "00") {alert("日期格式錯(cuò)誤"); return ""};
             if(!isNumber(sec)||sec>"59" || sec< "00") {alert("日期格式錯(cuò)誤"); return ""};
            }
            else if (!(sIndex==-1&&hIndex==-1&&mIndex==-1))
            {
                      alert("日期格式錯(cuò)誤");
             return "";
                  }
                  retDate = retDate.replace(/HH/i,hour);
                  retDate = retDate.replace(/mm/i,min);
                  retDate = retDate.replace(/ss/i,sec);
            return retDate;
          }

          posted on 2007-09-18 08:46 primeton 閱讀(851) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # re: 處理一些和日期有關(guān)的動(dòng)作  回復(fù)  更多評(píng)論   

          樓主JS玩得很厲害啊
          2007-09-18 09:21 | 千里冰封

          # re: 處理一些和日期有關(guān)的動(dòng)作  回復(fù)  更多評(píng)論   

          太厲害了,什么時(shí)候我才能學(xué)到這個(gè)地步啊,讓爐子的火不再是黃的,讓它邊青!
          2007-09-18 15:44 | 楊愛(ài)友

          # re: 處理一些和日期有關(guān)的動(dòng)作  回復(fù)  更多評(píng)論   

          太不靈活了。
          時(shí)間必須為yyyyMMdd,如果想格式化成yyyyMM都不行。
          2007-09-19 16:42 | bean

          # re: 處理一些和日期有關(guān)的動(dòng)作  回復(fù)  更多評(píng)論   

          怎么把Sat Now 10 15:30:00 UTC+0800 2007轉(zhuǎn)換成11/5和2007-10-15兩種格式?
          2007-11-05 16:33 | xx

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 黄山市| 阿克苏市| 崇州市| 乐平市| 金湖县| 峨山| 麻栗坡县| 徐州市| 泸溪县| 哈密市| 浦城县| 汨罗市| 申扎县| 台东市| 稷山县| 东阳市| 汤阴县| 冕宁县| 长宁县| 贵州省| 日喀则市| 察隅县| 同心县| 商洛市| 昆明市| 黄梅县| 宜宾县| 白朗县| 宁津县| 哈尔滨市| 凤台县| 平凉市| 民权县| 林甸县| 旅游| 临武县| 务川| 马鞍山市| 西昌市| 五家渠市| 弋阳县|