Date オブジェクトを お好みのスタイルに

Date.prototype.format = function(str) {
    var zero = /%d|%i|%m|%H|%I|%M|%S/;
    var date = {
        "%a" : (["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"])[this.getDay()],
        "%A" : (["Sunday", "MOnday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"])[this.getDay()],
        "%b" : (["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"])[this.getMonth()],
        "%B" : (["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"])[this.getMonth()],
        "%C" : this.getFullYear().toString().slice(0, 2),
        "%d" : this.getDate(),
        "%H" : this.getHours(),
        "%I" : (this.getHours() > 12) ? this.getHours() - 12 : this.getHours(),
        "%m" : this.getMonth() + 1,
        "%M" : this.getMinutes(),
        "%p" : (this.getHours() > 12) ? "PM" : "AM",
        "%P" : (this.getHours() > 12) ? "pm" : "am",
        "%s" : this.getTime(),
        "%S" : this.getSeconds(),
        "%u" : this.getDay() + 1,
        "%w" : this.getDay(),
        "%y" : this.getYear(),
        "%Y" : this.getFullYear(),
        "%z" : (this.toLocaleString().match(/\+\d{4}/))[0],
        "%%" : "%%"
    }
    return str.replace(
        /(%[\w%])/g,
        function(e) {
            if(e.match(zero)) {
                return (date[e] < 10) ? "0" + date[e] : date[e];
            } else {
                return date[e];
            }
        }
    );
}

使いかた

var date = new Date();
date.format("%Y/%m%d (%a) %H:%M:%S") // 2007/02/21 (Wed) 13:50:00


上のスクリプトと組み合わせればなかなかいい感じになる。
穴がありそうだけど

修正

toLocaleFromat と "%ほげ” をあわした。ただし足りないもの多数。

修正 2/24 11:50

"%" 自体も使えるように。