2008-02-29 [長年日記]

_ [javascript] Time.local()

if(!window){
    var window = new Object;
}
if(!window.Time){
    var Time = new Object;
}
Time.local = function(year, month, day, hour, min, sec){
    year = year || 1900;
    if(isNaN(Number(month))){
        month = 0;
    }else{
        month--;
    }
    if(isNaN(Number(day))){day = 1};
    hour = hour || 0;
    min = min || 0;
    sec = sec || 0;
    return new Date(year, month, day, hour, min, sec);
};

これで、

js> Time.local.apply(null, [2008, 2, 29, 22, 13]);
Fri Feb 29 2008 22:13:00 GMT+0900 (JST)

みたいなことができる。Date() はコンストラクタとして呼ばないと引数を処理しないみたいなので。

というか、引数が指定されなかった時の undefined の扱いがテラメンドス。 しかし Date() は器用に繰り上がり/繰り下がりをするなぁ。

js> var ms = (new Date).getTime()
js> ms
1204291650083
js> new Date(1970,0,1,9,0,ms/1000)
Fri Feb 29 2008 22:27:30 GMT+0900 (JST)
[]