恰好這周需求中有用到日期格式與unix時間戳的相互轉換,查閱了一些資料,就打算寫一篇博客總結一下。
但願這篇文章足夠簡單粗暴,讓你一目瞭然,有所收穫。
一、日期格式轉換成時間戳
var timeStamp = new Date("日期");
/*
目前我知道的支持轉換的時期格式爲:
1. "2018/1/1 8:00:00";
2. “2018,1,1 8:00:00”;
3. "2018-1-1 8:00:00";
*/
其中年份爲必填,其餘的都可以省略,月/日不填的話默認是1月1日。
時:分:秒不填的話 ==> 1.2種格式默認是00:00:00,第三種格式默認是08:00:00
二、時間戳轉換成日期格式
var date = new Date(timeStamp * 1000);//時間戳爲10位需*1000,時間戳爲13位的話不需乘1000
/*其實上面這一句,你就可以獲得一個日期格式的時間了。
但如果你想要轉換成指定格式的日期,可以看下面這個超好用的函數
*/
function timestampToTime(timestamp) {
var date = new Date(timestamp);
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = date.getDate() + ' ';
var h = date.getHours() + ':';
var m = date.getMinutes() + ':';
var s = date.getSeconds();
return Y+M+D+h+m+s;
}
timestampToTime(1543655727202);//這裏時間戳是13位,所以不需乘1000
console.log(timestampToTime(1543655727202);//2018-10-1 17:15:27
小tips:可以看到getMonth的地方做了一點小處理,是因爲這裏返回的月份是從0開始的,所以需要+1
好的,看到這裏,如果你學到你想要的知識了,祝你食用愉快!
附:一些關於時間戳的其他小常識(趕時間的可以略過)
1.獲取當前時間戳的方法:
var timestamp1 = Date.parse(new Date()); //不推薦
var timestamp2 = (new Date()).valueOf();
var timestamp3 = new Date().getTime();
第一種方式無法精確到毫秒,會默認用000代替。
後兩種均可以精確到毫秒。
2.對日期進行加減:
var d = new Date("2008/04/15");
d.setMonth(d.getMonth() + 1 + 1);
//加一個月,同理,可以加一天:getDate()+1,加一年:getYear()+1
//注意setMonth/setDate/getYear這些都是對unix時間的api
如果你快樂編程的時候突然發現報錯:UnCaught TypeError:date.getMonth is not a function,那就是我上面說的,你先需要把date格式(日期格式)的時間轉換成Date格式(時間戳格式)
再給一個現成的封裝好的對日期days相加的函數,其他的類似寫就好
function addDate(date,days){
var d=new Date(date);
d.setDate(d.getDate()+days);
var m=d.getMonth()+1;
return d.getFullYear()+'-'+m+'-'+d.getDate();
}
寫到這裏,應該能滿足大部分hr的需求(神奇需求除外)
撒花,完結~