在 javascript 中內建了一個 Date 物件,可用於實現一些日期和時間的操作。
本文整理 js 日期物件的詳細功能,使用 js 日期物件獲取具體日期、昨天、今天、明天、每月天數、時間戳等,以及常用的日期時間處理方法。
在前端可以通過new Date()生成Date物件,如果沒有傳引數時,即獲取本地當前日期和時間。不過這時候顯示的內容並不是我們常見的日期格式,而是一個當前時區時間的描述文字,以下程式碼顯示的效果如圖所示:
如果希望顯示的內容格式化為常見的日期格式,最簡單的辦法是呼叫 toLocaleString() 方法,如下所示:
const date = new Date(); console.log(date.toLocaleString());
new Date()可接受三種型別的引數
第一種是隻傳入一個number型別的引數,一般是時間戳的毫秒數,返回引數數位所處的時間,如下所示:
const date = new Date(946684800000); console.log(date.toLocaleString());
第二種也只傳入一個引數,引數型別是string,不過需要是正確的格式,如 "2010-10-10 10:10:10",返回對應的時間:
const date = new Date("2010-10-10 10:10:10"); console.log(date.toLocaleString());
const date = new Date(2022,12,1,10,10,10,999); console.log(date.toLocaleString());
const date = new Date(); console.log(date.getTime());
console.log(Date.now());
const date = new Date(); console.log(date.valueOf());
const date = new Date(); console.log(+date);
二、獲取常用時間資料
function formatDate(){ // 建立日期物件 const date = new Date(); // 獲取各日期/時間資料 let year = date.getFullYear(); let month = date.getMonth(); let DD = date.getDate(); let hour = date.getHours(); let minute = date.getMinutes(); let second = date.getSeconds(); let day = date.getDay(); // 拼接日期時間為字串 let time = year + '年' + month + '月' + DD + '日 ' + hour + ':' + minute + ':' + second + ' 星期' + ['日','一','二','三','四','五','六',][day]; return time } console.log(formatDate())
三、設定日期時間
const date = new Date(); date.setFullYear(2020) console.log(date.toLocaleString());
const date = new Date(); date.setMonth(2,0); console.log(date.getDate());
const date = new Date(); date.setDate(date.getDate() + 1); console.log('明天是',date.toLocaleString()); date.setDate(date.getDate() - 2); console.log('昨天是',date.toLocaleString());
function getSpecificDate(day){ //計算出要加/減的毫秒數 var num = 1000*60*60*24*day; var newDate = new Date(Date.now()+num); return newDate; } console.log('明天是',getSpecificDate(1).toLocaleString()); console.log('後天是',getSpecificDate(2).toLocaleString()); console.log('昨天是',getSpecificDate(-1).toLocaleString());
還有一種很方便的,給Date的原型方法中加入format方法,這樣在Date物件上可以直接使用format方法格式化所需要的日期。如下所示:
Date.prototype.format = function(format){ var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" : Math.floor((this.getMonth()+3)/3), //quarter "S" : this.getMilliseconds() //millisecond }; if(/(y+)/.test(format)){ format = format.replace(RegExp.$1, (this.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(new Date().format('yyyy-MM-dd hh:mm:ss'))