首頁 >web前端 >js教程 >JavaScript日期時間與時間戳記的轉換函數分享_javascript技巧

JavaScript日期時間與時間戳記的轉換函數分享_javascript技巧

WBOY
WBOY原創
2016-05-16 16:16:421067瀏覽

如果只是將目前時間轉成時間戳,可以直接使用new Date().getTime()/1000;但如果是將某個特定時間或日期轉成Unix時間戳,ie不支援像new Date( “2013-1-1”)  這樣帶參數的方法,將返回NaN。

對此,我寫了以下函數,支援ie6 ,谷歌,火狐等瀏覽器:

複製程式碼 程式碼如下:

function getTime(day){
re = /(d{4})(?:-(d{1,2})(?:-(d{1,2}))?)?(?:s (d{1,2}): (d{1,2}):(d{1,2}))?/.exec(day);
return new Date(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]| |0).getTime()/1000;
}

//test
alert(getTime("2013-02-03 10:10:10"));
alert(getTime("2013-02-03"));
alert(getTime("2013-02"));
alert(getTime("2013"));

下面這個將時間戳轉換成日期格式的函數,支援自訂的日期格式,效果類似PHP的date函數,同樣支援ie6 ,Google,火狐等瀏覽器。這個函數是網友實現的,以後有時間我也寫一個出來 ^_^

複製程式碼 程式碼如下:

函數日期(格式,時間戳記){
    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
    var pad = 函數(n, c){
        if((n = n "").length             return new Array( c - n.length).join("0") n;
        } 其他 {
            回傳 n;
        }
    };
    var txt_weekdays = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
var txt_months = ["", "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月" ,「十二月」];
    var f = {
        // 天
        d: function(){return pad(f.j(), 2)},
        D: function(){return f.l().substr(0,3)},
        j: function(){return jsdate.getDate()},
        l: function(){return txt_weekdays[f.w()]},
        N: function(){return f.w() 1},
        S:函數(){返回txt_ordin [f.j()]? txt_ordin[f.j()] : 'th'},
        w: function(){return jsdate.getDay()},
        z: function(){return (jsdate - new Date(jsdate.getFullYear() "/1/1")) / 864e5 >>> 0},
     
        // 週
        W: 函數(){
            var a = f.z(), b = 364 f.L() - a;
            var nd2, nd = (new Date(jsdate.getFullYear() "/1/1").getDay() || 7) - 1;
            if(b                 回 1;
            } 其他{
                if(a = 4 && a >= (6 - nd)){
                    nd2 = new Date(jsdate.getFullYear() - 1 "/12/31");
                    返回日期("W", Math.round(nd2.getTime()/1000));
                } 其他{
                   已 (1 (nd > 0) / 7) : (a - (7 - nd)) / 7) >> 0);
;
;
;
;
;
;
;                 }
            }
        },
     
        // 月份
        F: function(){return txt_months[f.n()]},
        m: function(){return pad(f.n(), 2)},
        M: function(){return f.F().substr(0,3)},
        n: function(){return jsdate.getMonth() 1},
        t: 函數(){
            var n;             if( (n = jsdate.getMonth() 1) == 2 ){                 回 28 f.L();             } 其他{                 if( n & 1 && n 7 ){                     以 31;                } 其他{
                    以 30;
                }
            }
        },
     
        // 年
        L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
        //o 尚不支援
        Y: function(){return jsdate.getFullYear()},
        y: function(){return (jsdate.getFullYear() "").slice(2)},
     
        // 時間
        a: function(){return jsdate.getHours() > 11? 「下午」:「上午」},
        A: function(){return f.a().toUpperCase()},
        B:函數(){
            // 彼得‧保羅‧科赫:
            var off = (jsdate.getTimezoneOffset() 60)*60;
            var theSeconds = (jsdate.getHours() * 3600) (jsdate.getMinutes() * 60) jsdate.getSeconds() off;
            varbeat = Math.floor(theSeconds/86.4);
            if (節拍 > 1000) 節拍 -= 1000;
            if (beat             if ((String(beat)).length == 1)beat = "00"beat;
            if ((String(beat)).length == 2)beat = "0"beat;
            返回節拍;
        },
        g: function(){return jsdate.getHours() % 12 || 12},
        G: function(){return jsdate.getHours()},
        h: function(){return pad(f.g(), 2)},
        H: function(){return pad(jsdate.getHours(), 2)},
        i: function(){return pad(jsdate.getMinutes(), 2)},
        s: function(){return pad(jsdate.getSeconds(), 2)},
        //還不支援u
     
        // 時區
        //尚不支援
        //我還不支援
        O: 函數(){
            var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
            if (jsdate.getTimezoneOffset() > 0) t = "-" t;否則 t = " " t;
            回 t;
        },
        P: function(){var O = f.O();return (O.substr(0, 3) ":" O.substr(3, 2))},
        //尚不支援
        //還不支援Z
     
        // 完整日期/時間
        c: function(){return f.Y() "-" f.m() "-" f.d() "T" f.h() ":" f.i() ":" f.s() f.P()},
        //r 尚不支援
        U: function(){return Math.round(jsdate.getTime()/1000)}
    };
     
    return format.replace(/[\]?([a-zA-Z])/g, function(t, s){
        if( t!=s ){
            // 轉義
            ret = s;
        } else if( f[s] ){
            // 存在一個日期函數
            ret = f[s]();
        } 其他{
            // 沒什麼特別的
            ret = s;
        }
        回 ret;
    });
}

//測試
Alert(date('Y-m-d H:i:s',(new Date).getTime()/1000));
Alert(date('Y-m-d',(new Date).getTime()/1000));
Alert(date('Y-m-d H:i:s','1355252653'));

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn