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]

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. 【转】postgreSQL​之autovacuum性能问题分析(一)

    最近笔者在项目中遇到postgreSQL的性能问题,所以计划在公众号里写一个系列文章去追踪记录这些问题以及分析过程或解决方法. 本文主要是关于postgreSQL的autovacuum的问题.可能很多 ...

  2. Java基础一篇过(一)反射

    一.反射是个啥 定义 : 在运行状态中动态获取的类的信息以及动态调用对象的方法,这种功能称为java语言的反射机制. 对于任意一个类,都能够知道这个类的所有属性和方法. 对于任意一个对象,都能够调用它 ...

  3. linux目录的含义

    /bin (binary)存放linux系统必备执行的命令. /boot存放linux的启动文件和内核 /cdrom存放光驱文件系统的目录,刚安装系统时此文件夹是空的. /dev device存放li ...

  4. 理解vue与MVVM三要素

    MVVM到底是什么,跟Jquery有什么区别? MVVM理解,跟MVC区别 Model View Controller,一般是用户操作view视图按钮,触发controller内方法,cotrolle ...

  5. 项目启动加载配置,以及IP黑名单,使用CommandLineRunner和ApplicationRunner来实现(一般用在网关进行拦截黑名单)

    //使用2个类的run方法都可以在项目启动时加载配置,唯一不同的是他们的参数不一样,CommandLineRunner的run方法参数是基本类型,ApplicationRunner的run方法参数是一 ...

  6. 晚间测试3 B. 单(single)

    题目描述 单车联通大街小巷.这就是出题人没有写题目背景的原因. 对于一棵树,认为每条边长度为 \(1\),每个点有一个权值\(a[i]\).\(dis(u,v)\)为点\(u\)到\(v\)的最短路径 ...

  7. JavaScript 将十进制数转换成格式类似于 0x000100 或 #000100 的十六进制数

    将十进制数转换成格式类似于 0x000100 或 #000100 的十六进制数 1 <!DOCTYPE html> 2 <html> 3 <head> 4 < ...

  8. JavaScript倒计时效果

    实现思路: 输入的时间减去现在的时间就是剩余的时间,但是不能拿着时分秒相减,比如05分减去25分,结果会是负的. 可以用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的 ...

  9. Java之格林威治时间格式转换成北京时间格式

    Java之格林威治时间格式转换成北京时间格式 package com.mtons.mblog; import java.text.ParseException; import java.text.Si ...

  10. 【手摸手,带你搭建前后端分离商城系统】01 搭建基本代码框架、生成一个基本API

    [手摸手,带你搭建前后端分离商城系统]01 搭建基本代码框架.生成一个基本API 通过本教程的学习,将带你从零搭建一个商城系统. 当然,这个商城涵盖了很多流行的知识点和技术核心 我可以学习到什么? S ...