1. 程式人生 > >ExtJs Js中常用的格式化及時間處理函式

ExtJs Js中常用的格式化及時間處理函式

以下示例顯示瞭如何在美國語言環境中解釋日期和時間模式。給定的日期和時間為美國太平洋時區的本地時間 2001-07-04 12:08:56

    日期和時間模式                                          結果
    "yyyy.MM.dd G 'at' HH:mm:ss z"              2001.07.04 AD at 12:08:56 PDT
    "EEE, MMM d, ''yy"                                   Wed, Jul 4, '01
    "h:mm a"                                                12:08 PM
    "hh 'o''clock' a, zzzz"                              12 o'clock PM, Pacific Daylight Time
    "K:mm a, z"                                             0:08 PM, PDT
    "yyyyy.MMMMM.dd GGG hh:mm aaa"       02001.July.04 AD 12:08 PM
    "EEE, d MMM yyyy HH:mm:ss Z"             Wed, 4 Jul 2001 12:08:56 -0700
    "yyMMddHHmmssZ"                                010704120856-0700
    "yyyy-MM-dd'T'HH:mm:ss.SSSZ"             2001-07-04T12:08:56.235-0700

Extjs中,格式化與上述不大一致。以下同樣可應用於GWT-EXT

樣本資料:

'Wed Jan 10 2007 15:05:01 GMT-0600 (中區標準時間)'

格式符    輸出         說明

------  ----------  --------------------------------------------------------------

  d      10         月份中的天數,兩位數字,不足位補“0

  D      Wed        當前星期的縮寫,三個字母

  j      10         月份中的天數,不補“0

  l      Wednesday  當前星期的完整拼寫

  S      th         英語中月份天數的序數詞的字尾,2個字元(與格式符“j”連用)

  w      3          一週之中的天數(17

  z      9          一年之中的天數(0365

  W      01         一年之中的週數,兩位數字(0052

  F      January    當前月份的完整拼寫

  m      01         當前的月份,兩位數字,不足位補“0

  M      Jan        當前月份的完整拼寫,三個字母

  n      1          當前的月份,不補“0

  t      31         當前月份的總天數

  L      0          是否閏年(“1”為閏年,“0”為平年)

  Y      2007       4位數字表示的當前年數

  y      07         2位數字表示的當前年數

  a      pm         小寫的“am”和“pm

  A      PM         大寫的“am”和“pm

  g      3          12小時製表示的當前小時數,不補“0

  G      15         24小時製表示的當前小時數,不補“0

  h      03         12小時製表示的當前小時數,不足位補“0

  H      15         24小時製表示的當前小時數,不足位補“0

  i      05         不足位補“0”的分鐘數

  s      01         不足位補“0”的秒數

  O      -0600      用小時數表示的與 GMT 差異數

  T      CST        當前系統設定的時區

  Z      -21600     用秒數表示的時區偏移量(西方為負數,東方為正數)

用法舉例:(注意你必須在字母前使用轉意字元“\\”才能將其作為字母本身而不是格式符輸出):

var dt = new Date('1/10/2007 03:05:01 PM GMT-0600');

document.write(dt.format('Y-m-d'));                         //2007-01-10

document.write(dt.format('F j, Y, g:i a'));                 //January 10, 2007, 3:05 pm

document.write(dt.format('l, \\t\\he dS of F Y h:i:s A'));  //Wednesday, the 10th of January 2007 03:05:01 PM

var myDate = new Date();myDate.getYear();        //獲取當前年份(2)myDate.getFullYear();    //獲取完整的年份(4,1970-????)myDate.getMonth();       //獲取當前月份(0-11,0代表1)myDate.getDate();        //獲取當前日(1-31)myDate.getDay();         //獲取當前星期X(0-6,0代表星期天)myDate.getTime();        //獲取當前時間(1970.1.1開始的毫秒數)myDate.getHours();       //獲取當前小時數(0-23)myDate.getMinutes();     //獲取當前分鐘數(0-59)myDate.getSeconds();     //獲取當前秒數(0-59)myDate.getMilliseconds();    //獲取當前毫秒數(0-999)myDate.toLocaleDateString();     //獲取當前日期var mytime=myDate.toLocaleTimeString();     //獲取當前時間myDate.toLocaleString( );        //獲取日期與時間

日期時間指令碼庫方法列表

Date.prototype.isLeapYear 判斷閏年Date.prototype.Format 日期格式化Date.prototype.DateAdd 日期計算Date.prototype.DateDiff 比較日期差Date.prototype.toString 日期轉字串Date.prototype.toArray 日期分割為陣列Date.prototype.DatePart 取日期的部分資訊Date.prototype.MaxDayOfDate 取日期所在月的最大天數Date.prototype.WeekNumOfYear 判斷日期所在年的第幾周StringToDate 字串轉日期型IsValidDate 驗證日期有效性CheckDateTime 完整日期時間檢查daysBetween 日期天數差

js程式碼:

//---------------------------------------------------  // 判斷閏年  //---------------------------------------------------  Date.prototype.isLeapYear = function()   {       return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   }   //---------------------------------------------------  // 日期格式化  // 格式 YYYY/yyyy/YY/yy 表示年份  // MM/M 月份  // W/w 星期  // dd/DD/d/D 日期  // hh/HH/h/H 時間  // mm/m 分鐘  // ss/SS/s/S 秒  //---------------------------------------------------  Date.prototype.Format = function(formatStr)   {       var str = formatStr;       var Week = ['','','','','','',''];      str=str.replace(/yyyy|YYYY/,this.getFullYear());       str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));       str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());       str=str.replace(/M/g,this.getMonth());       str=str.replace(/w|W/g,Week[this.getDay()]);       str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());       str=str.replace(/d|D/g,this.getDate());       str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());       str=str.replace(/h|H/g,this.getHours());       str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());       str=str.replace(/m/g,this.getMinutes());       str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());       str=str.replace(/s|S/g,this.getSeconds());       return str;   }   //+---------------------------------------------------  //| 求兩個時間的天數差 日期格式為 YYYY-MM-dd   //+---------------------------------------------------  function daysBetween(DateOne,DateTwo)  {       var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));      var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);      var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));      var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));      var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);      var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));      var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);       return Math.abs(cha);  }  //+---------------------------------------------------  //| 日期計算  //+---------------------------------------------------  Date.prototype.DateAdd = function(strInterval, Number) {       var dtTmp = this;      switch (strInterval) {           case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));          case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));          case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));          case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));          case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));          case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());          case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());          case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());      }  }  //+---------------------------------------------------  //| 比較日期差 dtEnd 格式為日期型或者有效日期格式字串  //+---------------------------------------------------  Date.prototype.DateDiff = function(strInterval, dtEnd) {       var dtStart = this;      if (typeof dtEnd == 'string' )//如果是字串轉換為日期型      {           dtEnd = StringToDate(dtEnd);      }      switch (strInterval) {           case 's' :return parseInt((dtEnd - dtStart) / 1000);          case 'n' :return parseInt((dtEnd - dtStart) / 60000);          case 'h' :return parseInt((dtEnd - dtStart) / 3600000);          case 'd' :return parseInt((dtEnd - dtStart) / 86400000);          case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));          case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);          case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();      }  }  //+---------------------------------------------------  //| 日期輸出字串,過載了系統的toString方法  //+---------------------------------------------------  Date.prototype.toString = function(showWeek)  {       var myDate= this;      var str = myDate.toLocaleDateString();      if (showWeek)      {           var Week = ['','','','','','',''];          str += ' 星期' + Week[myDate.getDay()];      }      return str;  }  //+---------------------------------------------------  //| 日期合法性驗證  //| 格式為:YYYY-MM-DDYYYY/MM/DD  //+---------------------------------------------------  function IsValidDate(DateStr)   {       var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去兩邊空格;       if(sDate=='') return true;       //如果格式滿足YYYY-(/)MM-(/)DDYYYY-(/)M-(/)DDYYYY-(/)M-(/)DYYYY-(/)MM-(/)D就替換為''       //資料庫中,合法日期可以是:YYYY-MM/DD(2003-3/21),資料庫會自動轉換為YYYY-MM-DD格式       var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');       if (s=='') //說明格式滿足YYYY-MM-DDYYYY-M-DDYYYY-M-DYYYY-MM-D       {           var t=new Date(sDate.replace(/\-/g,'/'));           var ar = sDate.split(/[-/:]/);           if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())           {               //alert('錯誤的日期格式!格式為:YYYY-MM-DDYYYY/MM/DD。注意閏年。');               return false;           }       }       else       {           //alert('錯誤的日期格式!格式為:YYYY-MM-DDYYYY/MM/DD。注意閏年。');           return false;       }       return true;   }   //+---------------------------------------------------  //| 日期時間檢查  //| 格式為:YYYY-MM-DD HH:MM:SS  //+---------------------------------------------------  function CheckDateTime(str)  {       var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;       var r = str.match(reg);       if(r==null)return false;       r[2]=r[2]-1;       var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);       if(d.getFullYear()!=r[1])return false;       if(d.getMonth()!=r[2])return false;       if(d.getDate()!=r[3])return false;       if(d.getHours()!=r[4])return false;       if(d.getMinutes()!=r[5])return false;       if(d.getSeconds()!=r[6])return false;       return true;   }   //+---------------------------------------------------  //| 把日期分割成陣列  //+---------------------------------------------------  Date.prototype.toArray = function()  {       var myDate = this;      var myArray = Array();      myArray[0] = myDate.getFullYear();      myArray[1] = myDate.getMonth();      myArray[2] = myDate.getDate();      myArray[3] = myDate.getHours();      myArray[4] = myDate.getMinutes();      myArray[5] = myDate.getSeconds();      return myArray;  }  //+---------------------------------------------------  //| 取得日期資料資訊  //| 引數 interval 表示資料型別  //| y 年 m月 d日 w星期 ww周 h時 n分 s秒  //+---------------------------------------------------  Date.prototype.DatePart = function(interval)  {       var myDate = this;      var partStr='';      var Week = ['','','','','','',''];      switch (interval)      {           case 'y' :partStr = myDate.getFullYear();break;          case 'm' :partStr = myDate.getMonth()+1;break;          case 'd' :partStr = myDate.getDate();break;          case 'w' :partStr = Week[myDate.getDay()];break;          case 'ww' :partStr = myDate.WeekNumOfYear();break;          case 'h' :partStr = myDate.getHours();break;          case 'n' :partStr = myDate.getMinutes();break;          case 's' :partStr = myDate.getSeconds();break;      }      return partStr;  }  //+---------------------------------------------------  //| 取得當前日期所在月的最大天數  //+---------------------------------------------------  Date.prototype.MaxDayOfDate = function()  {       var myDate = this;      var ary = myDate.toArray();      var date1 = (new Date(ary[0],ary[1]+1,1));      var date2 = date1.dateAdd(1,'m',1);      var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));      return result;  }  //+---------------------------------------------------  //| 取得當前日期所在周是一年中的第幾周  //+---------------------------------------------------  Date.prototype.WeekNumOfYear = function()  {       var myDate = this;      var ary = myDate.toArray();      var year = ary[0];      var month = ary[1]+1;      var day = ary[2];      document.write('< script language=VBScript\> \n');      document.write('myDate = Datue(''+month+'-'+day+'-'+year+'') \n');      document.write('result = DatePart('ww', myDate) \n');      document.write(' \n');      return result;  }  //+---------------------------------------------------  //| 字串轉成日期型別   //| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd  //+---------------------------------------------------  function StringToDate(DateStr)  {       var converted = Date.parse(DateStr);      var myDate = new Date(converted);      if (isNaN(myDate))      {           //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';          var arys= DateStr.split('-');          myDate = new Date(arys[0],--arys[1],arys[2]);      }      return myDate;  }  

若要顯示:當前日期加時間(:2009-06-12 12:00)

function CurentTime()    {         var now = new Date();        var year = now.getFullYear();       //        var month = now.getMonth() + 1;     //        var day = now.getDate();            //        var hh = now.getHours();            //        var mm = now.getMinutes();          //        var clock = year + "-";        if(month < 10)            clock += "0";        clock += month + "-";        if(day < 10)            clock += "0";        clock += day + " ";        if(hh < 10)            clock += "0";        clock += hh + ":";        if (mm < 10) clock += '0';         clock += mm;         return(clock);     }