현재 시간을 타임스탬프로 변환하는 경우 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'));