一個日期處理類庫moment.js

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

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

用到這個庫是由於工做需求要手擼一個價格日曆,找了一下沒有合心意的庫,在找的過程當中發現好幾個開源的日曆組件都用到了這個庫,一用果真美滋滋。spa

官方文檔的地址爲http://momentjs.cn/docs/,文檔裏面方法太多了,下面介紹幾個經常使用的方法,包括日期對象構建、日期格式化、日期加加減減、年月日的置換,基本能實現出一個日曆該有的全部功能。code

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/orm

很欣賞這個庫,函數式的寫法十分清新,光看名字就能知道什麼方法能夠作什麼,邊界保護寫的很好,源碼也是功能模塊劃分的整整齊齊,從裏到外都讓人十分舒服。對象

相關文章
相關標籤/搜索