一个日期处理类库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

很欣赏这个库,函数式的写法十分清新,光看名字就能知道什么方法能够作什么,边界保护写的很好,源码也是功能模块划分的整整齐齐,从里到外都让人十分舒服。对象

相关文章
相关标签/搜索