Created
March 9, 2015 10:15
-
-
Save hasschi/751127c50eb58b04094a to your computer and use it in GitHub Desktop.
日期輸出格式函數
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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