Skip to content

Instantly share code, notes, and snippets.

@hasschi
Created March 9, 2015 10:15
Show Gist options
  • Save hasschi/751127c50eb58b04094a to your computer and use it in GitHub Desktop.
Save hasschi/751127c50eb58b04094a to your computer and use it in GitHub Desktop.
日期輸出格式函數
Date.prototype.format = (function () {
var month_str = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var day_str = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
function ParseRepeatPattern(str, pos, char) {
var len = str.length;
var num = pos + 1;
while (num < len && str.substr(num, 1) == char) {
num++;
}
return num - pos;
}
function right(str, len) {
str = String(str);
return str.substr(str.length - len);
}
function padleft(str, len, char) {
if (!char) char = '0';
str = String(str);
while (str.length < len) {
str = char + str;
}
return str;
}
function Format(format) {
if (!format.length) return this.toString();
var date = this;
var str = format;
var strf = str.replace(/{{(\w+)}}/g, function (ret) {
var f = ret.substr(2, ret.length - 4);
var c = f.substr(0, 1);
var num = ParseRepeatPattern(f, 0, c);;
switch (c) {
case 'y':
return (num == 3) ?
date.getFullYear() - 1911 :
right(date.getFullYear(), num);
break;
case 'M':
return (num < 3) ?
padleft(date.getMonth() + 1, num) :
month_str[date.getMonth()].substr(0, num);
break;
case 'd':
return (num < 3) ?
padleft(date.getDate(), num) :
day_str[date.getDay()].substr(0, num);
break;
case 'h':
var h = date.getHours();
if (h > 12) h -= 12;
return padleft(h, num);
break;
case 'H':
return padleft(date.getHours(), num);
break;
case 'm':
return padleft(date.getMinutes(), num);
break;
case 's':
return padleft(date.getSeconds(), num);
break;
case 'f':
return date.getMilliseconds().toString().substr(0, num);
break;
case 't':
var t = date.getHours() < 12 ? "AM" : "PM";
return t.substr(0, num);
break;
case 'T':
var t = date.getHours() < 12 ? "上午" : "下午";
return t;
break;
case 'z':
var zo = date.getTimezoneOffset();
var z = zo / 60;
var a = z >= 0 ? "+" : "-";
return num > 2 ?
a + padleft(Math.abs(z), 2) + ":00" :
a + padleft(Math.abs(z), num);
break;
}
return '';
});
return strf;
}
return Format;
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment