實現簡易版的moment.js
阿新 • • 發佈:2017-06-22
date對象 hour getdate git .get ice ace -m mon
github源碼地址: www.baidu.com
作者: 易憐白
項目中使用了時間日期的處理方法,只使用了部分方法,為了不在引入第三方的庫(moment.js),這裏自己封裝了項目中使用到的方法。
要實現以下功能:
new Moment() // 返回當前的時間對象 new Moment().unix() // 返回當前時間的秒數 Moment.unix(timestamp) // 傳入秒數,返回傳入秒數的時間對象 new Moment().format(‘YYYY-MM-DD dd HH:mm:ss‘) // 返回值 2017-06-22 四 19:46:14 Moment.unix(1498132062000).format(‘YYYY-MM-DD dd HH:mm:ss‘) // 返回值 2017-06-22 四 19:46:14
一、基礎代碼:
1 class Moment { 2 constructor(arg = new Date().getTime()) { 3 this.date = new Date(arg) 4 } 5 }
arg = new Date().getTime() :這裏使用解構對arg添加默認值
二、實現unix方法
class Moment { constructor(arg = newDate().getTime()) { this.date = new Date(arg) } // getTime()返回的是毫秒數,需要轉成秒數並取整 unix() { return Math.round(this.date.getTime() / 1000) } }
unix方法:返回當前時間的秒數
三、實現靜態unix方法
1 class Moment { 2 constructor(arg = new Date().getTime()) { 3 this.date = new Date(arg)4 } 5 6 static unix(timestamp) { 7 return new Moment(timestamp * 1000) 8 } 9 }
靜態unix方法:參數timestamp 毫秒數 返回一個Date對象
四、實現format方法
class Moment { constructor(arg = new Date().getTime()) { this.date = new Date(arg) } format(formatStr) { const date = this.date const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const week = date.getDay() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() return formatStr.replace(/Y{2,4}|M{1,2}|D{1,2}|d{1,4}|H{1,2}|m{1,2}|s{1,2}/g, (match) => { switch (match) { case ‘YY‘: return String(year).slice(-2) case ‘YYY‘: case ‘YYYY‘: return String(year) case ‘M‘: return String(month) case ‘MM‘: return String(month).padStart(2, ‘0‘) case ‘D‘: return String(day) case ‘DD‘: return String(day).padStart(2, ‘0‘) case ‘d‘: return String(week) case ‘dd‘: return weeks[week] case ‘ddd‘: return ‘周‘ + weeks[week] case ‘dddd‘: return ‘星期‘ + weeks[week] case ‘H‘: return String(hour) case ‘HH‘: return String(hour).padStart(2, ‘0‘) case ‘m‘: return String(minute) case ‘mm‘: return String(minute).padStart(2, ‘0‘) case ‘s‘: return String(second) case ‘ss‘: return String(second).padStart(2, ‘0‘) default: return match } }) } }
實現簡易版的moment.js