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. 有没有异常处理翻车过的,绩效还被打了C

    絮叨 因为程序异常处理问题,就在前几天龙叔的服务挂了几秒钟. 完了,马上季度末打绩效,竟然在这里翻车了,心如刀绞啊. 虽然没有影响到用户体验,但是找到问题并解决掉问题是工程师日常追求之一. 作为一个优 ...

  2. brew清华镜像

    https://mirror.tuna.tsinghua.edu.cn/help/homebrew/

  3. Python-变量、变量作用域、垃圾回收机制原理-global nonlocal

    变量实现原理决定了Python使用的垃圾回收机制为变量引用计数,当这个对象引用计数为0时候,则会自动执行__del__函数回收资源, del方法只是把变量指向的对象引用计数减一而已并删除这个变量 表达 ...

  4. Hbuilder MUI 下拉选择与时间选择器

    一. Hbuilder 下拉选择 <link rel="stylesheet" href="../../../assets/mui/css/mui.picker.m ...

  5. Python练习题 003:完全平方数

    [Python练习题 003]一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? --------------------------------------- ...

  6. 从零搭建Golang开发环境--go修仙序章

    1. 什么是go语言 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态 .强类型.编译型语言 .Go 语 ...

  7. Pots(POJ - 3414)【BFS 寻找最短路+路径输出】

    Pots(POJ - 3414) 题目链接 算法 BFS 1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其 ...

  8. 【题解】CF1290B Irreducible Anagrams

    Link 题目大意:对于一个字符串,每次询问一个区间,看看这个区间是不是可以划分为若干区间,这些区间内数字经过排列后可以还原原来区间. \(\text{Solution:}\) 菜鸡笔者字符串构造该好 ...

  9. Android和。net加密。

    来源: Github: https://github.com/Pavel-Durov/CodeProject-Android-and-NET-Encryption 直接: Source Code (A ...

  10. ubuntu20 使用命令安装 nginx

    安装 nginx sudo apt-get install nginx -y 配置文件 nginx 服务管理 # 启动 nginx 服务 service nginx start # 关闭 nginx ...