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