javascript の Date に Delphi の FormatDateTime みたいなのを追加

javascript の Date に Delphi の FormatDateTime みたいなのを追加してみた
  1. var aaa = new Date();  
  2.     aaa.format("yyyy/mm/dd(aaa) hh:nn:ss");  
  3.     aaa.format("yyyy/mm/dd(aaa) 午前/後 h:nn:ss");  
日本の元号系(gggとか)、エスケープ(ダブル、シングルコーテーションで括る)は、実装されてませんので、文章に入れ込むときは細切れに使ってください 非標準で「前/後」というのを追加してます
  1. Date.prototype.format = function(s) {  
  2.  var jweek  = new Array("日""月""火""水""木""金""土");  
  3.  var eweek  = new Array("Sunday""Monday""Tuesday""Wednesday""Thursday""Friday""Saturday");  
  4.  var emonth = new Array("January""February""March""April""May""June""July""August""September""October""November""December");  
  5.   
  6.  var ampm = s.match(/am\/pm/ig);  
  7.  if( ampm != null ){  
  8.   s = s.replace(/am\/pm/ig, "%ESC_WAMPM_ESC%");  
  9.  }  
  10.   
  11.  var ap = s.match(/a\/m/ig);  
  12.  if( ap != null ){  
  13.   s = s.replace(/a\/p/ig, "%ESC_SAMPM_ESC%");  
  14.  }  
  15.   
  16.  s = s.replace(/前\/後/ig, "%ESC_JAMPM_ESC%");  
  17.   
  18.  s = s.replace(/dddd/g,   "%ESC_WWEEK_ESC%");  
  19.  s = s.replace(/ddd/g,    "%ESC_SWEEK_ESC%");  
  20.   
  21.  s = s.replace(/mmmm/g,   "%ESC_WMONTH_ESC%");  
  22.  s = s.replace(/mmm/g,    "%ESC_SMONTH_ESC%");  
  23.   
  24.  s = s.replace(/yyyy/g, String(this.getFullYear()));  
  25.  s = s.replace(/yy/g, String(this.getFullYear()).slice(-2));  
  26.   
  27.  s = s.replace(/mm/g, ('0' + (this.getMonth() + 1)).slice(-2));  
  28.  s = s.replace(/dd/g, ('0' + this.getDate()).slice(-2));  
  29.   
  30.  s = s.replace(/m/g, String(this.getMonth() + 1));  
  31.  s = s.replace(/d/g, this.getDate());  
  32.   
  33.  if( (this.getHours() > 11) && ((s.indexOf("%ESC_WAMPM_ESC%") >= 0) || (s.indexOf("%ESC_SAMPM_ESC%") >= 0) || (s.indexOf("%ESC_JAMPM_ESC%") >= 0)) ){  
  34.   s = s.replace(/hh/g, ('0' + (this.getHours() - 12)).slice(-2));  
  35.   s = s.replace(/h/g, String(this.getHours() -12));  
  36.  }else{  
  37.   s = s.replace(/hh/g, ('0' + this.getHours()).slice(-2));  
  38.   s = s.replace(/h/g, this.getHours());  
  39.  }  
  40.   
  41.  s = s.replace(/nn/g, ('0' + this.getMinutes()).slice(-2));  
  42.  s = s.replace(/n/g, this.getMinutes());  
  43.   
  44.  s = s.replace(/ss/g, ('0' + this.getSeconds()).slice(-2));  
  45.  s = s.replace(/s/g, this.getSeconds());  
  46.   
  47.  s = s.replace(/zzz/g, ('00' + this.getMilliseconds()).slice(-3));  
  48.  s = s.replace(/Z/g, this.getMilliseconds());  
  49.   
  50.  s = s.replace(/aaa/g, jweek[this.getDay()]);  
  51.  s = s.replace(/\%ESC_WWEEK_ESC\%/g, eweek[this.getDay()]);  
  52.  s = s.replace(/\%ESC_SWEEK_ESC\%/g, eweek[this.getDay()].substr(0, 3));  
  53.   
  54.  s = s.replace(/\%ESC_WMONTH_ESC\%/g, emonth[this.getMonth()]);  
  55.  s = s.replace(/\%ESC_SMONTH_ESC\%/g, emonth[this.getMonth()].substr(0, 3));  
  56.   
  57.  if( ampm != null){  
  58.   for(var i = 0; i < ampm.length; i++){  
  59.    s = s.replace(/\%ESC_WAMPM_ESC\%/, ampm[i].split("/")[Math.floor(this.getHours() / 12)]);  
  60.   }  
  61.  }  
  62.   
  63.  if( ap != null){  
  64.   for(var i = 0; i < ap.length; i++){  
  65.    s = s.replace(/\%ESC_SAMPM_ESC\%/, ap[i].split("/")[Math.floor(this.getHours() / 12)]);  
  66.   }  
  67.  }  
  68.   
  69.  if( (this.getHours() > 11) ){  
  70.   s = s.replace(/\%ESC_JAMPM_ESC\%/g, '後');  
  71.  }else{  
  72.   s = s.replace(/\%ESC_JAMPM_ESC\%/g, '前');  
  73.  }  
  74.   
  75.  return s;  
  76. }  

コメント