JavaScript 玩轉時間物件 Date

JavaScript
0x01 內容介紹
許多朋友在開發的過程中總會遇到各種有關時間的問題,如獲取某特定時間的時間戳、把時間物件格式化等等,本篇文章將會幫助大家總結並解決一些常用的時間問題,您可以把它當成一篇字典文章,方便今後查閱、使用
0x02 時間戳
const date = new Date(); //獲取時間物件 date.getTime(); //獲取當前的時間戳,從1970年1月1日零點到現在的毫秒數 Math.round(date.getTime()/1000); //獲取當前的時間戳,根據毫秒數四捨五入的結果 Math.floor(date.getTime()/1000); //獲取當前的時間戳,根據毫秒數下舍入 Date.parse(date); // 獲取當前時間戳,毫秒是0
0x03 獲取日期和時間
let date = new Date(); let year = date.getFullYear();//獲取完整的年份(4位,1970-????) let month = date.getMonth() + 1;//獲取當前月份(0-11,0代表1月) let day = date.getDate();//獲取當前日(1-31) let weekDay = date.getDay();//獲取當前星期X(0-6,0代表星期天) let hour = date.getHours();//獲取當前小時數(0-23) let minute = date.getMinutes();//獲取當前分鐘數(0-59) let second = date.getSeconds();//獲取當前秒數(0-59) let milliseconds = date.getMilliseconds();//獲取當前毫秒數(0-999) let setWeekDay = ''; switch (weekDay) { case 0: setWeekDay = '星期天'; break; case 1: setWeekDay = '星期一'; break; case 2: setWeekDay = '星期二'; break; case 3: setWeekDay = '星期三'; break; case 4: setWeekDay = '星期四'; break; case 5: setWeekDay = '星期五'; break; case 6: setWeekDay = '星期六'; break; } console.log(`今天是${year}年${month}月${day}日 ${setWeekDay} ${hour}時${minute}分${second}秒 ${milliseconds}毫秒`); // 下面三個語句是在 Node 環境裡執行的結果,瀏覽器裡執行的結果與這個不同 date.toLocaleDateString();//獲取日期,YYYY-MM-DD date.toLocaleTimeString();//獲取時間,HH:mm:ss date.toLocaleString();//獲取日期與時間,YYYY-MM-DD HH:mm:ss
0x04 實戰
要求:寫一個通用函式或者類,可以獲取當前時間或者使用者自定義時間的時間戳和時間格式,也可以實現兩者的相互轉換
class Datetime { constructor(date) { if(date) { if (date instanceof Date) { this.date = date; } else { throw new Error('建構函式引數錯誤,應傳Date()物件') } } else { this.date = new Date(); } } // 轉化成時間戳 transTimeStamp() { return this.date.getTime(); } // 轉化為時間格式 YYYY-MM-DD HH:mm:ss transDateTime() { const {date, dateTimeFormat} = this; let year = date.getFullYear();//獲取完整的年份(4位,1970-????) let month = dateTimeFormat(date.getMonth() + 1);//獲取當前月份(0-11,0代表1月) let day = dateTimeFormat(date.getDate());//獲取當前日(1-31) let hour = dateTimeFormat(date.getHours());//獲取當前小時數(0-23) let minute = dateTimeFormat(date.getMinutes());//獲取當前分鐘數(0-59) let second = dateTimeFormat(date.getSeconds());//獲取當前秒數(0-59) return `${year}-${month}-${day} ${hour}:${minute}:${second}` } // 格式化 dateTimeFormat(v) { return v < 10 ? `0${v}` : `${v}` } setDateTime(date) { if(date) { if (date instanceof Date) { this.date = date; } else { throw new Error('setDateTime函式引數錯誤,應傳Date()物件') } } else { this.date = new Date(); } } } // 實現 const date = new Datetime(); console.log(date.transDateTime()); console.log(date.transTimeStamp()); date.setDateTime(new Date('2017-06-05 12:22:23')); console.log(date.transDateTime()); console.log(date.transTimeStamp());
簡書作者 小菜荔枝 轉載請聯絡作者獲得授權