>  기사  >  웹 프론트엔드  >  JavaScript 날짜 시간 및 타임스탬프 변환 기능 Sharing_javascript 기술

JavaScript 날짜 시간 및 타임스탬프 변환 기능 Sharing_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:16:421051검색

현재 시간을 타임스탬프로 변환하는 경우 new Date().getTime()/1000을 직접 사용할 수 있지만 특정 시간이나 날짜를 Unix 타임스탬프로 변환하려면 new를 지원하지 않습니다. Date( "2013-1-1") 매개변수가 포함된 이 메서드는 NaN을 반환합니다.

이와 관련하여 ie6, Google, Firefox 및 기타 브라우저를 지원하는 다음 기능을 작성했습니다.

코드 복사 코드는 다음과 같습니다.

함수 getTime(일){
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;
}

//테스트
Alert(getTime("2013-02-03 10:10:10"));
Alert(getTime("2013-02-03"));
Alert(getTime("2013-02"));
Alert(getTime("2013"));

다음 함수는 타임스탬프를 날짜 형식으로 변환합니다. 이는 PHP의 날짜 함수와 유사하며 ie6, Google, Firefox 및 기타 브라우저도 지원합니다. 이 기능은 네티즌이 구현한 기능인데 앞으로 시간나면 한번 써보겠습니다^_^

코드 복사 코드는 다음과 같습니다.

함수 날짜(형식, 타임스탬프){
    var a, jsdate=((timestamp) ? new Date(timestamp*1000) : new Date());
    var 패드 = 함수(n, c){
        if((n = n "").length < c){
            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 = ["", "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월" , "12월"];
    var f = {
        //일
        d: 함수(){return pad(f.j(), 2)},
        D: 함수(){return f.l().substr(0,3)},
        j: 함수(){return jsdate.getDate()},
        l: 함수(){return txt_weekdays[f.w()]},
        N: 함수(){return f.w() 1},
        S: function(){return txt_ordin[f.j()] ? txt_ordin[f.j()] : '일'},
        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 <= 2 && nd >= 4 && a >= (6 - nd)){
                    nd2 = new Date(jsdate.getFullYear() - 1 "/12/31");
                    반환 날짜("W", Math.round(nd2.getTime()/1000));
                } 그 외{
                    return (1 (nd 0);
                }
            }
        },
     
        //월
        F: 함수(){return txt_months[f.n()]},
        m: function(){return pad(f.n(), 2)},
        M: 함수(){return f.F().substr(0,3)},
        n: 함수(){return jsdate.getMonth() 1},
        t: 함수(){
            var n;
            if( (n = jsdate.getMonth() 1) == 2 ){
                28 f.L()을 반환합니다.
            } 그 외{
                if(n & 1 && n < 8 || !(n & 1) && n > 7 ){
                    31을 반환;
                } 그 외{
                    30을 반환;
                }
            }
        },
     
        // 연도
        L: function(){var y = f.Y();return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0},
        //아직 지원되지 않습니다
        Y: 함수(){return jsdate.getFullYear()},
        y: function(){return (jsdate.getFullYear() "").slice(2)},
     
        // 시간
        a: function(){return jsdate.getHours() > 11? "오후": "오전"},
        A: 함수(){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(beat)).length == 1) beat = "00" beat;
            if ((String(beat)).length == 2) beat = "0" beat;
            리턴비트;
        },
        g: function(){return jsdate.getHours() % 12 || 12},
        G: 함수(){return jsdate.getHours()},
        h: 함수(){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)},
        //아직 지원되지 않습니다
     
        // 시간대
        //아직 지원되지 않습니다
        //아직 지원하지 않았습니다
        O: 함수(){
            var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
            if (jsdate.getTimezoneOffset() > 0) t = "-" t; else t = " " t;
            돌아오세요;
        },
        P: function(){var O = f.O();return (O.substr(0, 3) ":" O.substr(3, 2))},
        //아직 지원되지 않습니다
        //Z는 아직 지원되지 않습니다
     
        // 전체 날짜/시간
        c: 함수(){return f.Y() "-" f.m() "-" f.d() "T" f.h() ":" f.i() ":" f.s() f.P()},
        //r은 아직 지원되지 않습니다
        U: 함수(){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;
        }
        리트윗;
    });
}

//테스트
Alert(date('Y-m-d H:i:s',(new Date).getTime()/1000));
Alert(date('Y-m-d',(new Date).getTime()/1000));
Alert(date('연월일 H:i:s','1355252653'));

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.