一個日期處理類庫moment.js

翡翡發表於2018-04-01

“Moment.js 是一個JavaScript 日期處理類庫,用於解析、檢驗、操作、以及顯示日期.” —— 官方如是說道

這個日期處理庫基本上貫徹了小而美的原則,基本上你能想到的對日期的操作和格式化裡面都有,支援多種語言的轉換,也有官方的中文文件。

用到這個庫是因為工作需求要手擼一個價格日曆,找了一下沒有合心意的庫,在找的過程中發現好幾個開源的日曆元件都用到了這個庫,一用果然美滋滋。

官方文件的地址為http://momentjs.cn/docs/,文件裡面方法太多了,下面介紹幾個常用的方法,包括日期物件構建、日期格式化、日期加加減減、年月日的置換,基本能實現出一個日曆該有的所有功能。

moment(string)

  • 返回一個moment型別的物件,相當於日期物件的構造器
  • 可以檢查日期是不是對的,雜七雜八的字串都能識別
  • 不給引數預設返回今天
moment('2017 02 03')
moment('2017-1-3')
moment('2017 1 1')
複製程式碼

[moment].format('YYYY-MM-DD')

  • 接受一個moment型別,返回一個格式化過的字串
  • 引數決定了怎麼格式化字串(入參細則詳見官方文件)
moment('2018 1 1').format('YYYY-MM')
=> '2018-01'

moment().format("dddd, MMMM Do YYYY");
=> "Sunday, February 14th 2010"
複製程式碼

[moment].add(num, 'year/month/days')

  • 喜加一
  • 第一個引數是選擇增加的數量,第二個引數是增加的物件
moment('2018-01-01').add(2, 'year')
=> '2020-01-01'
複製程式碼

[moment].subtract(num, 'years/months/days')

  • 減一

[moment].set('year/month/date', num)

  • 令設定的部分為num
  • 注意月份為0-11
  • 用這個設定年月日的好處是,一些invalid值會被cover,比如
moment('2013-01-31').set('month', 1).format('YYYY-MM-DD')
=> '2013-02-28' //二月只到28號
複製程式碼

[moment].diff([moment], 'days/months/years')

  • 計算日/月/年差
moment(departureDate).diff(moment(), 'days');
複製程式碼

[moment].isBetween(string, string)

  • moment物件是否處於兩個日期字串之間
moment().isBetween(item.startDate, item.endDate)
複製程式碼

[moment].isSame('2010-10-20')

  • 比較兩個日期是否相同
moment('2010-10-20').isSame('2010-10-20')
複製程式碼

上面只是我個人經驗總結出來的一些方法,詳細引數和更多方法可查閱官方文件http://momentjs.cn/docs/

很欣賞這個庫,函式式的寫法十分清新,光看名字就能知道什麼方法可以做什麼,邊界保護寫的很好,原始碼也是功能模組劃分的整整齊齊,從裡到外都讓人十分舒服。

相關文章