Moment.js常见用法总结

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

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

获取时间

  • Start of Time

    1. moment().startOf(String)
    • 获取今天0时0分0秒
      1. moment().startOf('day')
    • 获取本周第一天(周日)0时0分0秒
      1. moment().startOf('week')
    • 获取本周周一0时0分0秒
      1. moment().startOf('isoWeek')
    • 获取当前月第一天0时0分0秒
      1. moment().startOf('month')
  • End of Time

    1. moment().endOf(String)
    • 获取今天23时59分59秒
      1. moment().endOf('day')
    • 获取本周最后一天(周六)23时59分59秒
      1. moment().endOf('week')
    • 获取本周周日23时59分59秒
      1. moment().endOf('isoWeek')
    • 获取当前月最后一天23时59分59秒
      1. moment().endOf('month')
  • Days in Month

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

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

    • 获取年份
      1. moment().year()
      2. moment().get('year')
    • 获取月份
      1. moment().month() (0~11, 0: January, 11: December)
      2. moment().get('month')
    • 获取一个月中的某一天
      1. moment().date()
      2. moment().get('date')
    • 获取一个星期中的某一天
      1. moment().day() (0~6, 0: Sunday, 6: Saturday)
      2. moment().weekday() (0~6, 0: Sunday, 6: Saturday)
      3. moment().isoWeekday() (1~7, 1: Monday, 7: Sunday)
      4. moment().get('day')
      5. mment().get('weekday')
      6. moment().get('isoWeekday')
    • 获取小时
      1. moment().hours()
      2. moment().get('hours')
    • 获取分钟
      1. moment().minutes()
      2. moment().get('minutes')
    • 获取秒数
      1. moment().seconds()
      2. moment().get('seconds')
    • 获取当前的年月日时分秒
      1. moment().toArray() // [years, months, date, hours, minutes, seconds, milliseconds]
      2. moment().toObject() // {years: xxxx, months: x, date: xx ...}

设置时间

  • Set Time

    1. moment().year(Number), moment().month(Number)...
    2. moment().set(String, Int)
    3. moment().set(Object)
    • 设置年份
      1. moment().year(2019)
      2. moment().set('year', 2019)
      3. moment().set({year: 2019})
    • 设置月份
      1. moment().month(11) (0~11, 0: January, 11: December)
      2. moment().set('month', 11)
    • 设置某个月中的某一天
      1. moment().date(15)
      2. moment().set('date', 15)
    • 设置某个星期中的某一天
      1. moment().weekday(0) // 设置日期为本周第一天(周日)
      2. moment().isoWeekday(1) // 设置日期为本周周一
      3. moment().set('weekday', 0)
      4. moment().set('isoWeekday', 1)
    • 设置小时
      1. moment().hours(12)
      2. moment().set('hours', 12)
    • 设置分钟
      1. moment().minutes(30)
      2. moment().set('minutes', 30)
    • 设置秒数
      1. moment().seconds(30)
      2. moment().set('seconds', 30)
  • Add Time

    1. moment().add(Number, String)
    2. moment().add(Object)
    • 设置年份
      1. moment().add(1, 'years')
      2. moment().add({years: 1})
    • 设置月份
      1. moment().add(1, 'months')
    • 设置日期
      1. moment().add(1, 'days')
    • 设置星期
      1. moment().add(1, 'weeks')
    • 设置小时
      1. moment().add(1, 'hours')
    • 设置分钟
      1. moment().add(1, 'minutes')
    • 设置秒数
      1. moment().add(1, 'seconds')
  • Subtract Time

    1. moment().subtract(Number, String)
    2. moment().subtract(Object)
    • 设置年份
      1. moment().subtract(1, 'years')
      2. moment().subtract({years: 1})
    • 设置月份
      1. moment().subtract(1, 'months')
    • 设置日期
      1. moment().subtract(1, 'days')
    • 设置星期
      1. moment().subtract(1, 'weeks')
    • 设置小时
      1. moment().subtract(1, 'hours')
    • 设置分钟
      1. moment().subtract(1, 'minutes')
    • 设置秒数
      1. moment().subtract(1, 'seconds')

格式化时间

  • Format Time

    1. moment().format()
    2. moment().format(String)
    • 格式化年月日: 'xxxx年xx月xx日'
      1. moment().format('YYYY年MM月DD日')
    • 格式化年月日: 'xxxx-xx-xx'
      1. moment().format('YYYY-MM-DD')
    • 格式化时分秒(24小时制): 'xx时xx分xx秒'
      1. moment().format('HH时mm分ss秒')
    • 格式化时分秒(12小时制):'xx:xx:xx am/pm'
      1. moment().format('hh:mm:ss a')
    • 格式化时间戳(以秒为单位)
      1. moment().format('X') // 返回值为字符串类型
    • 格式化时间戳(以毫秒为单位)
      1. moment().format('x') // 返回值为字符串类型

比较时间

  • Difference

    1. moment().diff(Moment|String|Number|Date|Array)
    • 获取两个日期之间的时间差
      1. let start_date = moment().subtract(1, 'weeks')
      2. let end_date = moment()
      3. end_date.diff(start_date) // 返回毫秒数
      4. end_date.diff(start_date, 'months') // 0
      5. end_date.diff(start_date, 'weeks') // 1
      6. end_date.diff(start_date, 'days') // 7
      7. start_date.diff(end_date, 'days') // -7

转化为JavaScript原生Date对象

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

    1. let m = moment()
    2. let nativeDate1 = m.toDate()
    3. let nativeDate2 = new Date(m)
    4. String(nativeDate1) === String(nativeDate2) // true

实战

  • 获取昨日0时0分0秒到昨日23时59分59秒, 格式:[milliseconds, milliseconds]
  • 获取上周一到上周日时间范围,格式: [seconds, seconds]
  • 获取上个月第一天和最后一天时间范围, 格式:[YYYY-MM-DD, YYYY-MM-DD]

Moment.js常见用法总结的更多相关文章

  1. mustache.js常见用法

    一.mustache基于JS模板引擎,能较为快捷和简单得实现数据得渲染 用法: 1.CDN引入mustache.js,以下是4.0.1版本,有需要可以去github上查询其他版本的代码. (funct ...

  2. [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)

    关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...

  3. Javascript模块化编程(三):require.js的用法

    Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...

  4. [转]EasyUI——常见用法总结

    原文链接: EasyUI——常见用法总结 1. 使用 data-options 来初始化属性. data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我 ...

  5. (转)Javascript模块化编程(三):Require.js的用法

    转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...

  6. React之特点及常见用法

    1.什么是React? React是一个用于构建用户界面的JavaScript库.主要用于构建UI,很多人认为Reatc是MVC中的V(视图). React起源于Facebook的内部项目,用来架构I ...

  7. Linux中find常见用法

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  8. php中的curl使用入门教程和常见用法实例

    摘要: [目录] php中的curl使用入门教程和常见用法实例 一.curl的优势 二.curl的简单使用步骤 三.错误处理 四.获取curl请求的具体信息 五.使用curl发送post请求 六.文件 ...

  9. Guava中Predicate的常见用法

    Guava中Predicate的常见用法 1.  Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...

随机推荐

  1. MySQL-Atlas--读写分离架构

    一.Atlas简介 Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目.它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础 ...

  2. 帮你理清React的生命周期

    这是一个从印记中文 | react官方文档提取总结的,算是帮自己理清并且强化记忆React的生命周期,以便以后编写组件的时候能够有更清晰的思路.本文如有纰漏,欢迎指正 整体上来讲,React生命周期分 ...

  3. Java基础——克隆

    1.克隆 假设有一个对象object1,在某处又需要一个跟object1一样的实例object2,这两个对象是绝对独立的,不会因为某一个修改另一个随之改变,这样,我们不能直接将对象objec1t的引用 ...

  4. 简化ETL工作,编写一个Canal胶水层

    前提 这是一篇憋了很久的文章,一直想写,却又一直忘记了写.整篇文章可能会有点流水账,相对详细地介绍怎么写一个小型的"框架".这个精悍的胶水层已经在生产环境服役超过半年,这里尝试把耦 ...

  5. 【题解】「MCOI-02」Convex Hull 凸包

    题目戳我 \(\text{Solution:}\) \[\sum_{i=1}^n \sum_{j=1}^n \rho(i)\rho(j)\rho(\gcd(i,j)) \] \[=\sum_{d=1} ...

  6. mac常用指令

    mkdir demo //创建一个文件夹 touch index.html // 创建一个html文件 rm rouch index.html //删除找个index.html文件 rmdir dem ...

  7. sql注入里关键字绕过的发现

    网上大量文章,甚至<黑客攻防技术实战宝典-WEB实战篇>里面都说一些关键字如 select 等绕过可以用注释符/**/. 例如: select,union.可以用 ,se/**/lect, ...

  8. VSCODE 配置eslint规则和自动修复

    全局安装eslint 打开终端,运行npm install eslint -g全局安装ESLint. vscode安装插件 vscode 扩展设置 依次点击 文件 > 首选项 > 设置 { ...

  9. 2016年 实验五 Internet与网络工具的使用

    实验五 Internet与网络工具的使用 [实验目的] 本实验目的在于掌握 Telnet.FTP.Email的工作机理,并会在 Internet 上熟练使用相关工具软件. [实验条件] ⑴.个人计算机 ...

  10. Pyhton中获取列表的索引

    index方法 list_a= [12,213,22,2,32] for a in list_a: print(list_a.index(a)) 结果: 0 1 2 3 4 如果列表的没有重复项的话那 ...