Moment.js常见用法总结

Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。

​ 日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等。接下来,我将按照这些操作对Moment.js中的Doc进行整理分类,方便学习和日后的查阅。

获取时间

  • Start of Time

    moment().startOf(String)
    
    • 获取今天0时0分0秒

      moment().startOf('day')
      
    • 获取本周第一天(周日)0时0分0秒

      moment().startOf('week')
      
    • 获取本周周一0时0分0秒

      moment().startOf('isoWeek')
      
    • 获取当前月第一天0时0分0秒

      moment().startOf('month')
      
  • End of Time

    moment().endOf(String)
    
    • 获取今天23时59分59秒

      moment().endOf('day')
      
    • 获取本周最后一天(周六)23时59分59秒

      moment().endOf('week')
      
    • 获取本周周日23时59分59秒

      moment().endOf('isoWeek')
      
    • 获取当前月最后一天23时59分59秒

      moment().endOf('month')
      
  • Days in Month

    moment().daysInMonth()
    
    • 获取当前月的总天数

      moment().daysInMonth()
      
  • Timestamp

    • 获取时间戳(以秒为单位)

    moment().format('X') // 返回值为字符串类型
    moment().unix() // 返回值为数值型
    
    • 获取时间戳(以毫秒为单位)

    moment().format('x') // 返回值为字符串类型
    moment().valueOf() // 返回值为数值型
    
  • Get Time

    • 获取年份

      moment().year()
      moment().get('year')
      
    • 获取月份

      moment().month() (0~11, 0: January, 11: December)
      moment().get('month')
      
    • 获取一个月中的某一天

      moment().date()
      moment().get('date')
      
    • 获取一个星期中的某一天

      moment().day() (0~6, 0: Sunday, 6: Saturday)
      moment().weekday() (0~6, 0: Sunday, 6: Saturday)
      moment().isoWeekday() (1~7, 1: Monday, 7: Sunday)
      moment().get('day')
      mment().get('weekday')
      moment().get('isoWeekday')
      
    • 获取小时

      moment().hours()
      moment().get('hours')
      
    • 获取分钟

      moment().minutes()
      moment().get('minutes')
      
    • 获取秒数

      moment().seconds()
      moment().get('seconds')
      
    • 获取当前的年月日时分秒

      moment().toArray() // [years, months, date, hours, minutes, seconds, milliseconds]
      moment().toObject() // {years: xxxx, months: x, date: xx ...}
      

设置时间

  • Set Time

    moment().year(Number), moment().month(Number)...
    moment().set(String, Int)
    moment().set(Object)
    
    • 设置年份

      moment().year(2019)
      moment().set('year', 2019)
      moment().set({year: 2019})
      
    • 设置月份

      moment().month(11) (0~11, 0: January, 11: December)
      moment().set('month', 11)
      
    • 设置某个月中的某一天

      moment().date(15)
      moment().set('date', 15)
      
    • 设置某个星期中的某一天

      moment().weekday(0) // 设置日期为本周第一天(周日)
      moment().isoWeekday(1) // 设置日期为本周周一
      moment().set('weekday', 0)
      moment().set('isoWeekday', 1)
      
    • 设置小时

      moment().hours(12)
      moment().set('hours', 12)
      
    • 设置分钟

      moment().minutes(30)
      moment().set('minutes', 30)
      
    • 设置秒数

      moment().seconds(30)
      moment().set('seconds', 30)
      
  • Add Time

    moment().add(Number, String)
    moment().add(Object)
    
    • 设置年份

      moment().add(1, 'years')
      moment().add({years: 1})
      
    • 设置月份

      moment().add(1, 'months')
      
    • 设置日期

      moment().add(1, 'days')
      
    • 设置星期

      moment().add(1, 'weeks')
      
    • 设置小时

      moment().add(1, 'hours')
      
    • 设置分钟

      moment().add(1, 'minutes')
      
    • 设置秒数

      moment().add(1, 'seconds')
      
  • Subtract Time

    moment().subtract(Number, String)
    moment().subtract(Object)
    
    • 设置年份

      moment().subtract(1, 'years')
      moment().subtract({years: 1})
      
    • 设置月份

      moment().subtract(1, 'months')
      
    • 设置日期

      moment().subtract(1, 'days')
      
    • 设置星期

      moment().subtract(1, 'weeks')
      
    • 设置小时

      moment().subtract(1, 'hours')
      
    • 设置分钟

      moment().subtract(1, 'minutes')
      
    • 设置秒数

      moment().subtract(1, 'seconds')
      

格式化时间

  • Format Time

    moment().format()
    moment().format(String)
    
    • 格式化年月日: 'xxxx年xx月xx日'

      moment().format('YYYY年MM月DD日')
      
    • 格式化年月日: 'xxxx-xx-xx'

      moment().format('YYYY-MM-DD')
      
    • 格式化时分秒(24小时制): 'xx时xx分xx秒'

      moment().format('HH时mm分ss秒')
      
    • 格式化时分秒(12小时制):'xx:xx:xx am/pm'

      moment().format('hh:mm:ss a')
      
    • 格式化时间戳(以秒为单位)

      moment().format('X') // 返回值为字符串类型
      
    • 格式化时间戳(以毫秒为单位)

      moment().format('x') // 返回值为字符串类型
      

比较时间

  • Difference

    moment().diff(Moment|String|Number|Date|Array)
    
    • 获取两个日期之间的时间差

      let start_date = moment().subtract(1, 'weeks')
      let end_date = moment()end_date.diff(start_date) // 返回毫秒数end_date.diff(start_date, 'months') // 0
      end_date.diff(start_date, 'weeks') // 1
      end_date.diff(start_date, 'days') // 7
      start_date.diff(end_date, 'days') // -7
      

转化为JavaScript原生Date对象

moment().toDate()
new Date(moment())
  • 将Moment时间转换为JavaScript原生Date对象

    let m = moment()
    let nativeDate1 = m.toDate()
    let nativeDate2 = new Date(m)String(nativeDate1) === String(nativeDate2) // true
    

实战

  • 获取昨日0时0分0秒到昨日23时59分59秒, 格式:[milliseconds, milliseconds]

  • 获取上周一到上周日时间范围,格式: [seconds, seconds]

  • 获取上个月第一天和最后一天时间范围, 格式:[YYYY-MM-DD, YYYY-MM-DD]

时间和日期的JS库Moment.js常见用法总结相关推荐

  1. 移动开发js库Zepto.js使用中的一些注意点

    来自http://chaoskeh.com/blog/some-experience-of-using-zepto.html的参考. 前段时间完成了公司一个产品的 HTML5 触屏版,开发中使用了 Z ...

  2. 前端学习-使用JS库Leaflet.js生成世界地图并获取标注地址经纬度。

    介绍:Leaflet是一个开源的JavaScript库,对移动端友好且对地图有很好的交互性. 大小仅仅只有 33 KB, 同时具有大多数地图所需要的特点. Leaflet设计的非常简单易懂, 同时具有 ...

  3. 前端高效开发必备的 js 库梳理

    之前有很多人问学好前端需要学习哪些 js 库, 主流框架应该学 vue 还是 react ? 针对这些问题, 笔者来说说自己的看法和学习总结. 首先我觉得在学习任何知识之前必须要有一个明确的学习目标, ...

  4. 创建自己的共用js库

    直至昨晚为止,学习了一个多月的MVC与jQuery,从所做的练习中,发觉jQuery的代码也有跟C#语言一样可以重构,多页面有相同使用的方法函数,均可以放置于一个单独立的js文件或是自定义的js库中. ...

  5. 使用模块化工具Rollup打包自己开发的JS库

    使用模块化工具Rollup打包自己开发的JS库 打包JS库demo项目地址:https://github.com/Miazzy/xdata-utils-btools 背景 最近有个需求,需要为小程序写 ...

  6. 介绍两个用于生成二维码的js库

    生成二维码的js库 QRCode.js 简介 使用示例 jquery.qrcode.js 简介 使用示例 调整二维码尺寸 QRCode.js 简介 这是一个原生的js库,用于生成二维码. github ...

  7. android 日期时间类,Android 时间与日期操作类

    获取本地日期与时间 public String getCalendar() { @SuppressLint("SimpleDateFormat") SimpleDateFormat ...

  8. 【卡法 常用 ckl.js 库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度...

    [卡法 常用js库]: js汇合 表单验证  cookie设置  日期格式  电话手机号码  email  整数  小数  金额   检查参数长度 // +---------------------- ...

  9. 【微收藏】FourShadows.js – 时间感知的算法驱动的图标阴影JS库

    废话一箩筐,筐筐有心得 不小心养成了一个刷微博的习惯,主要还是关注一些前端人士,学习一些前端方面的知识,看到大家都有一些刷微博的小习惯.有的是转发一下,转发内容来一个标记(MARK).也有评论中标记为 ...

  10. 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本。该案例支持处理 js 的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常 error 状态、支持视频播放

    YCWebView 项目地址:yangchong211/YCWebView 简介: 基于腾讯 x5 开源库,提高 webView 开发效率,大概要节约你百分之六十的时间成本.该案例支持处理 js 的交 ...

最新文章

  1. JavaScript(八)
  2. linux和哪些主机配了互信,linux主机互信
  3. PAT1049 数列的片段和 (20 分)
  4. hdu 1418(不相交的曲线分面)
  5. python创建一个json_如何为Python选择一个更快的JSON库
  6. mysql系列之6--------使用第三方工具-percona来备份mysql和恢复
  7. 华师网教计算机应用基础作业,华师大网络教育选修课《计算机应用基础统考》平时作业答案(13页)-原创力文档...
  8. 补充轻量级持久层V2版本的测试页面模板与实体类模板
  9. 软件设计---概要设计和详细设计
  10. OpenCV 对比度增强
  11. Rewrite 做二级域名转向
  12. uniapp uview 1.x设置遮罩层全屏loading
  13. 区块链:现实与未来的二律背反
  14. 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...
  15. 浅谈css3的3D动画效果并制作一个简单的旋转照片墙
  16. 嵌入式Linux设备驱动面试题汇总
  17. C++核心准则SF.7:不要在头文件中的全局作用域中使用using namespace指令
  18. LoRa进行跳频扩频通信(FHSS)的原理
  19. 机顶盒编解码视频质量测试方法
  20. 博客园好文,转载作者:欢跳的心写的一篇关于《window 删除文件提示指定的文件名无效或太长 - 欢跳的心 - 博客园》

热门文章

  1. 1. jQuery 简介
  2. 25. JavaScript PopupAlert
  3. QATF自动化测试框架
  4. JS中遍历普通数组和字典数组的区别
  5. 2019年7月19日星期五(交叉编译工具)
  6. 对 String 字符串的理解
  7. Centos7搭建kubernetes搭建
  8. 关于UIAlertAction如何修改sheet上的字体颜色
  9. .h和.cpp文件的区别 .
  10. FireFox2和FireFox3共存解决方案(附完整图解)