最近業(yè)務(wù)中重構(gòu)時(shí)間控件,關(guān)于JavaScript的毫秒數(shù)與特殊時(shí)間格式之間的轉(zhuǎn)換也接觸了不少,用框架也無(wú)非就是那么一兩句話的問(wèn)題,但思來(lái)想去凌摄,還是打算自己實(shí)現(xiàn)一遍理解才會(huì)深刻,廢話少說(shuō)乾翔,看以下需求:
1.后臺(tái)返回時(shí)間戳,頁(yè)面需展示出特定時(shí)間格式如"2017-05-06 00:00:00"
2.前端在頁(yè)面接收到特定時(shí)間格式(如上)浓瞪,請(qǐng)求數(shù)據(jù)參數(shù)格式是時(shí)間戳
時(shí)間轉(zhuǎn)毫秒數(shù)
1.根據(jù)日期字符串生成毫秒數(shù)
var longDate = Date.parse('2017-05-06 00:00:00'); //1494000000000,精確到秒
var longDate2 = new Date('2017-05-06 00:00:00').getTime(); //1494000000000,精確到毫秒
2.獲取當(dāng)前時(shí)間戳
var nowTime1 = Date.now();
毫秒數(shù)轉(zhuǎn)時(shí)間
1.普通時(shí)間格式
var time = new Date(1494000000000);
//Sat May 06 2017 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
console.info(time instanceof Date); //true
2.特殊時(shí)間格式
var date = new Date(); //當(dāng)前標(biāo)準(zhǔn)時(shí)間格式
var year = date.getFullYear(); //取得四位數(shù)的年份
var month = date.getMonth()+1; //返回0~11之間的數(shù)字,0代表一月弛秋,11代表12月
var day = date.getDate(); //返回天數(shù)科乎,0~31,getDay()返回的是星期幾(0~6)
var hour = date.getHours(); //獲取小時(shí)
var minute = date.getMinutes(); //獲取分鐘
var second = date.getSeconds(); //獲取秒
console.info(year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second); //2017-5-6 0:0:0
3.丑陋的封裝
上述過(guò)程太過(guò)啰嗦,如果每一次都這么做代碼會(huì)很混亂很臃腫捶障,所以下面對(duì)上述2的方式進(jìn)行簡(jiǎn)單的封裝
//封裝進(jìn)Date對(duì)象中
//接受一個(gè)要格式化的時(shí)間year和預(yù)定的格式e
Date.prototype.format = function(year,e) {
var year = date.getFullYear(); //取得四位數(shù)的年份
var month = date.getMonth() + 1; //返回0~11之間的數(shù)字项炼,0代表一月锭部,11代表12月
var day = date.getDate(); //返回天數(shù),0~31拌禾,getDay()返回的是星期幾(0~6)
var hour = date.getHours(); //獲取小時(shí)
var minute = date.getMinutes(); //獲取分鐘
var second = date.getSeconds(); //獲取秒
var eArr = e.split(' ');
var dateArr = eArr[0].split('');
var ymSymbol = dateArr[1];
var mdSymbol = dateArr[3];
var eOpts = {
Y: year + linkSymbol,
m: (month < 10 ? '0' + month : month) + linkSymbol,
d: day < 10 ? '0' + day : day
}
var formatStr = eOpts[dateArr[0]] + eOpts[dateArr[2]] + eOpts[dateArr[4]];
if (eArr.length > 1) {
var timeArr = eArr[1].split('');
var HH = ' ' + (hour < 10 ? '0' + hour : hour) + timeArr[2];
var ii = (minute < 10 ? '0' + minute : minute) + timeArr[5];
var ss = (second < 10 ? '0' + second : second);
formatStr = formatStr + HH + ii + ss;
}
return formatStr; //返回格式化后的時(shí)間
}
//調(diào)用
var useDateFormat = new Date();
var formatDate = useDateFormat.format(new Date(),'Y-m-d');
簡(jiǎn)直很簡(jiǎn)陋湃窍,但大概的思路就是這樣,撤循榆!