Javascript處理完整日期一般采用Date對(duì)象,通過日期對(duì)象獲取年、月、日、時(shí)、分、秒等信息實(shí)現(xiàn)日期計(jì)算及格式化,同時(shí)也支持各式各樣的日期字符串解析。
以日期格式化為例,下面是一個(gè)常見的JS日期格式化函數(shù):
function formatDate(date, format) { var o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "h+": date.getHours(), //小時(shí) "m+": date.getMinutes(), //分 "s+": date.getSeconds(), //秒 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 "S": date.getMilliseconds() //毫秒 }; if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return format; } //使用示例 console.log(formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')); //2019-08-12 14:59:32
該函數(shù)使用了正則表達(dá)式,通過對(duì)輸入的format進(jìn)行搜索替換,將日期的各個(gè)部分按照指定的格式進(jìn)行排列。
Javascript 中還可以用秒數(shù)表示一個(gè)日期,這種方式可以使用Date對(duì)象提供的setTime方法,但是需要注意的是,時(shí)間戳指定的時(shí)間值通常是以格林威治時(shí)間(GMT/UTC)1970年1月1日00:00:00開始的。
var date = new Date(); var timestamp = date.getTime(); //獲取當(dāng)前時(shí)間的時(shí)間戳 console.log(timestamp); //1565605182765 //設(shè)置時(shí)間戳 var newDate = new Date(); newDate.setTime(1568206718466); //時(shí)間戳需要以毫秒的形式傳入 console.log(newDate.getFullYear()); //2019 console.log(newDate.getMonth()); //8 console.log(newDate.getDate()); //12 console.log(newDate.getHours()); //15
當(dāng)然,javascript還支持著大量日期字符串解析的形式,例如:
new Date(); // Mon Aug 12 2019 15:55:22 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(2018,1); // Mon Feb 01 2018 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(2018,1,28); // Wed Feb 28 2018 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(2018,1,28,12); // Wed Feb 28 2018 12:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(2018,1,28,12,30);// Wed Feb 28 2018 12:30:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(2018,1,28,12,30,45);// Wed Feb 28 2018 12:30:45 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date('1995-12-17T03:24:00'); // Sun Dec 17 1995 03:24:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間) new Date(0); // Thu Jan 01 1970 08:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
總體來說,Javascript處理完整日期非常靈活多變,并且支持多種格式的輸入輸出,通過深入學(xué)習(xí),在實(shí)際開發(fā)中可以提升效率。