ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptの日時・タイムスタンプ変換関数sharing_javascriptスキル

JavaScriptの日時・タイムスタンプ変換関数sharing_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 16:16:421050ブラウズ

現在時刻をタイムスタンプに変換するだけの場合は、 new Date().getTime()/1000 を直接使用できますが、特定の時刻または日付を Unix タイムスタンプに変換したい場合は、new はサポートされていません。 Date( "2013-1-1") パラメーターを含むこのメソッドは NaN を返します。

これに関して、ie6、Google、Firefox、その他のブラウザをサポートする次の関数を作成しました。

コードをコピーします コードは次のとおりです:

関数 getTime(day){
re = /(d{4})(?:-(d{1,2})(?:-(d{1,2}))?)?(?:s (d{1,2}): (d{1,2}):(d{1,2}))?/.exec(日);
新しい日付を返します(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]| |0).getTime()/1000;
}

//テスト
alert(getTime("2013-02-03 10:10:10"));
alert(getTime("2013-02-03"));
alert(getTime("2013-02"));
alert(getTime("2013"));

次の関数は、タイムスタンプを日付形式に変換します。その効果は、PHP の日付関数と同様です。ie6、Google、Firefox、およびその他のブラウザもサポートします。この機能はネチズンによって実装されました。将来時間があれば書きます^_^

コードをコピー コードは次のとおりです:

関数 date(形式、タイムスタンプ){
    var a, jsdate=((タイムスタンプ) ? new Date(タイムスタンプ*1000) : new Date());
    var Pad = function(n, c){
        if((n = n "").length             return new Array( c - n.length).join("0") n;
        } else {
            n を返します;
        }
    };
    var txt_weekdays = ["日曜日"、"月曜日"、"火曜日"、"水曜日"、"木曜日"、"金曜日"、"土曜日"];
    var txt_ordin = {1:"st", 2:"nd", 3:"rd", 21:"st", 22:"nd", 23:"rd", 31:"st"};
    var txt_months = [""、"1月"、"2月"、"3月"、"4月"、"5月"、"6月"、"7月"、"8月"、"9月"、"10月"、"11月" 、 "12月"];
    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: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th'},
        w: function(){return jsdate.getDay()},
        z: function(){return (jsdate - new Date(jsdate.getFull Year() "/1/1")) / 864e5 >> 0}、
     
        // 週
        W: function(){
            var a = f.z(), b = 364 f.L() - a;
            var nd2, nd = (new Date(jsdate.getFull Year() "/1/1").getDay() || 7) - 1;
            if(b                 1 を返します;
            } else{
                if(a = 4 && a >= (6 - nd)){
                    nd2 = 新しい日付(jsdate.getFull Year() - 1 "/12/31");
                    return date("W", Math.round(nd2.getTime()/1000));
                } else{
                    return (1 (nd 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: function(){
            var n;
            if( (n = jsdate.getMonth() 1) == 2 ){
                return 28 f.L();
            } else{
                if( n & 1 && n 7 ){
                    31 を返す;
                } else{
                    30 を返します;
                }
            }
        }、
     
        // 年
        L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0}、
        //o まだサポートされていません
        Y: function(){return jsdate.getFull Year()},
        y: function(){return (jsdate.getFull Year() "").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;
            var beat = Math.floor(theSeconds/86.4);
            if (ビート > 1000) ビート -= 1000;
            if (ビート             if ((String(ビート)).length == 1) ビート = "00" ビート;
            if ((String(ビート)).length == 2) ビート = "0" ビート;
            ビートを返す;
        }、
        g: function(){return jsdate.getHours() % 12 || 12}、
        G: function(){return jsdate.getHours()},
        h: function(){リターンパッド(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 はまだサポートされていません
     
        // タイムゾーン
        //eはまだサポートされていません
        //まだサポートしていません
        O: function(){
            var t = Pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
            if (jsdate.getTimezoneOffset() > 0) t = "-" t; else t = " " t;
            return t;
        }、
        P: function(){var O = f.O();return (O.substr(0, 3) ":" O.substr(3, 2))},
        //Tはまだサポートされていません
        //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]();
        } else{
            // 特に何もありません
            ret = s;
        }
        return ret;
    });
}

//テスト
alert(date('Y-m-d H:i:s',(new Date).getTime()/1000));
alert(date('Y-m-d',(新しい日付).getTime()/1000));
alert(date('Y-m-d H:i:s','1355252653'));

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。