当前位置: 首页 > news >正文

一个日期处理类库moment.js

“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('year/month/date', num)

  • 喜加一
  • 第一个参数是选择增加的对象,第二个参数是增加的数量
moment('2018-01-01').add('year', 2)
=> '2020-01-01'
复制代码

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

  • 减一

[moment].set('years/months/days', 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/

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

相关文章:

  • 使用Kolla构建Pike版本OpenStack Docker镜像
  • spring MVC 使用 hibernate validator验证框架,国际化配置
  • Kubernetes软件包管理系统-Helm架构
  • A - 夹角有多大(题目已修改,注意读题)
  • 卸载openssl后yum无法使用,ssh无法连接的解决办法
  • 春雪
  • (16)Reactor的测试——响应式Spring的道法术器
  • Oracle 谈 JavaFX 及 Java 客户端技术的未来
  • [译] React 中的受控组件和非受控组件
  • drbd配置简述
  • 聊聊编译时注解
  • 微服务架构—高级设计篇
  • 漫谈版本控制系统
  • pandas(一)操作Series和DataFrame的基本功能
  • Redhat6.5匿名访问win10共享文件夹.
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2019.2.20 c++ 知识梳理
  • Apache的基本使用
  • axios 和 cookie 的那些事
  • Fundebug计费标准解释:事件数是如何定义的?
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JS题目及答案整理
  • KMP算法及优化
  • MySQL用户中的%到底包不包括localhost?
  • SQLServer之索引简介
  • Vue官网教程学习过程中值得记录的一些事情
  • 安装python包到指定虚拟环境
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 手写双向链表LinkedList的几个常用功能
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (简单) HDU 2612 Find a way,BFS。
  • (区间dp) (经典例题) 石子合并
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (五)网络优化与超参数选择--九五小庞
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ./configure,make,make install的作用
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 反射的使用
  • .net 受管制代码
  • .net/c# memcached 获取所有缓存键(keys)
  • :“Failed to access IIS metabase”解决方法
  • ?php echo ?,?php echo Hello world!;?
  • @ModelAttribute 注解
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [BUUCTF]-Reverse:reverse3解析