javascript の Date に Delphi の FormatDateTime みたいなのを追加
javascript の Date に Delphi の FormatDateTime みたいなのを追加してみた
var aaa = new Date();
aaa.format("yyyy/mm/dd(aaa) hh:nn:ss");
aaa.format("yyyy/mm/dd(aaa) 午前/後 h:nn:ss");
日本の元号系(gggとか)、エスケープ(ダブル、シングルコーテーションで括る)は、実装されてませんので、文章に入れ込むときは細切れに使ってください
非標準で「前/後」というのを追加してます
Date.prototype.format = function(s) {
var jweek = new Array("日", "月", "火", "水", "木", "金", "土");
var eweek = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var emonth = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
var ampm = s.match(/am\/pm/ig);
if( ampm != null ){
s = s.replace(/am\/pm/ig, "%ESC_WAMPM_ESC%");
}
var ap = s.match(/a\/m/ig);
if( ap != null ){
s = s.replace(/a\/p/ig, "%ESC_SAMPM_ESC%");
}
s = s.replace(/前\/後/ig, "%ESC_JAMPM_ESC%");
s = s.replace(/dddd/g, "%ESC_WWEEK_ESC%");
s = s.replace(/ddd/g, "%ESC_SWEEK_ESC%");
s = s.replace(/mmmm/g, "%ESC_WMONTH_ESC%");
s = s.replace(/mmm/g, "%ESC_SMONTH_ESC%");
s = s.replace(/yyyy/g, String(this.getFullYear()));
s = s.replace(/yy/g, String(this.getFullYear()).slice(-2));
s = s.replace(/mm/g, ('0' + (this.getMonth() + 1)).slice(-2));
s = s.replace(/dd/g, ('0' + this.getDate()).slice(-2));
s = s.replace(/m/g, String(this.getMonth() + 1));
s = s.replace(/d/g, this.getDate());
if( (this.getHours() > 11) && ((s.indexOf("%ESC_WAMPM_ESC%") >= 0) || (s.indexOf("%ESC_SAMPM_ESC%") >= 0) || (s.indexOf("%ESC_JAMPM_ESC%") >= 0)) ){
s = s.replace(/hh/g, ('0' + (this.getHours() - 12)).slice(-2));
s = s.replace(/h/g, String(this.getHours() -12));
}else{
s = s.replace(/hh/g, ('0' + this.getHours()).slice(-2));
s = s.replace(/h/g, this.getHours());
}
s = s.replace(/nn/g, ('0' + this.getMinutes()).slice(-2));
s = s.replace(/n/g, this.getMinutes());
s = s.replace(/ss/g, ('0' + this.getSeconds()).slice(-2));
s = s.replace(/s/g, this.getSeconds());
s = s.replace(/zzz/g, ('00' + this.getMilliseconds()).slice(-3));
s = s.replace(/Z/g, this.getMilliseconds());
s = s.replace(/aaa/g, jweek[this.getDay()]);
s = s.replace(/\%ESC_WWEEK_ESC\%/g, eweek[this.getDay()]);
s = s.replace(/\%ESC_SWEEK_ESC\%/g, eweek[this.getDay()].substr(0, 3));
s = s.replace(/\%ESC_WMONTH_ESC\%/g, emonth[this.getMonth()]);
s = s.replace(/\%ESC_SMONTH_ESC\%/g, emonth[this.getMonth()].substr(0, 3));
if( ampm != null){
for(var i = 0; i < ampm.length; i++){
s = s.replace(/\%ESC_WAMPM_ESC\%/, ampm[i].split("/")[Math.floor(this.getHours() / 12)]);
}
}
if( ap != null){
for(var i = 0; i < ap.length; i++){
s = s.replace(/\%ESC_SAMPM_ESC\%/, ap[i].split("/")[Math.floor(this.getHours() / 12)]);
}
}
if( (this.getHours() > 11) ){
s = s.replace(/\%ESC_JAMPM_ESC\%/g, '後');
}else{
s = s.replace(/\%ESC_JAMPM_ESC\%/g, '前');
}
return s;
}
コメント