一、概念:    https://www.cnblogs.com/Jimc/p/10591580.html    或    http://momentjs.cn/(官网)

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

二、API:   日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等。

  1、引入 moment.js 文件

// require 方式
var moment = require('moment'); // import 方式
import moment from 'moment';

  2、设置 moment 时区: 好像默认就是 中国的时区。所以一般不用单独去设置。

import 'moment/locale/zh-cn'
moment.locale('zh-cn');

  3、创建 moment 时间对象: moment 对象 类似 Date 对象。一个moment 对象就是一个  时间对象。但是不同于原生的 Date对象,是经过封装的时间对象。

    a、时间对象都是有完整时间戳的,原生Date时间对象 的 时间戳一般是固定,不会去改变的,但是 moment 时间对象的 时间戳,通过调用API是会变化的(即改变了时间)。

moment()   // 里面可以传入参数,创建指定时间的 时间对象。注意一个 moment 时间对象,只能执行一次moment()。就像 原生的 Date 一样,只能new一次。不然 每执行一次就是一个新的 时间对象。

    b、moment 时间对象,指向的时间对象是可变的。这点和 Date时间对象是不一样的。所以不要  把 一个 moment 对象,赋值给一个变量,在对这个变量进行时间设置。

let test = moment()   // 创建moment时间对象。
console.log(test.format('YYYY-MM-DD hh:mm:ss a')) // 2019-11-26 09:34:19 pm
test.add(1,'days')
console.log(test.format('YYYY-MM-DD hh:mm:ss a')) // 2019-11-27 09:34:19 pm

    所以 moment 时间对象的使用,一般都直接调用 moment()产生的时间对象,后接对应的方法。如:下面都是相对于 date1 的时间,但是不能直接在date1上操作,不然date1是时间就会被改变。

let date1 = moment()  // 现在的时间对象
let date2 = moment().subtract(1, 'days') // 一天前的时间对象
let date2 = moment().add(1, 'days') // 一天后的时间对象

  4、获取时间对象的信息:  moment 时间对象 提供 了这个时间对象下各种时间的获取。如:获取一个时间对象的 时、分、秒 等等。

     moment  提供获取时间对象信息的接口蛮多的,具体的可以参考    公网 或者 https://www.cnblogs.com/Jimc/p/10591580.html

  5、设置时间(也是创建时间的一种):就是基于一个 时间对象,变成 另外一个时间对象,即 相对时间 。  如, 一个天前的时间对象(相对当前时间)、一个天后的时间对象等。

let date2 = moment().subtract(1, 'days')  // 一天前 的 时间对象,而不是 moment() 时间对象了
let date2 = moment().add(1, 'days') // 一天后 的 时间对象

  6、格式化时间:将时间对象,以某种字符串 格式 表示。也是 一种  时间对象  信息的获取。

moment().format('YYYY-MM-DD')  //   2019-11-28

  7、比较时间:  获取两个日期之间的时间差

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

  8、moment对象  转化为JavaScript原生 Date对象

moment().toDate()
new Date(moment())

其他的还有一些 功能,但是不常用,这里就不介绍了,感兴趣的话,可以去官网查看。

moment.js 时间库的更多相关文章

  1. moment太重? 那就试试miment--一个超轻量级的js时间库

    介绍 Miment 是一个轻量级的时间库(打包压缩后只有1K),没有太多的方法,Miment的设计理念就是让你以几乎为零的成本快速上手,无需一遍一遍的撸文档 由来 首先 致敬一下Moment,非常好用 ...

  2. ⏰Day.js 2kB超轻量时间库 和Moment.js一样的API

    Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间.但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API.虽然 ...

  3. js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js

    日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...

  4. Node.js 基础库

    全局对象 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global对象的属性. 我们在 Node.js 中能够直接访问到对象通常都是 global ...

  5. js时间倒计时

    看了网上的其他的例子,觉得写的都有点复杂,不好理解,于是自己动手写了个. 本来想封装成jquery插件,但是觉得因为功能很简单,没有必要做成jquery插件,引用的时候不需要引入jqery库,这里直接 ...

  6. js获取当前时间,js时间函数

    Js获取当前日期时间及其它操作,js时间函数 var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); ...

  7. js 时间函数 及相关运算大全

    js 时间函数 及相关运算大全 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear(); ...

  8. Raphael Js矢量库API简介:

    Raphael Js矢量库API简介:Raphael Javascript 是一个 Javascript的矢量库. 2010年6月15日,著名的JavaScript库ExtJS与触摸屏代码库项目jQT ...

  9. JS 常用库汇总收集

    本文不定期更新, 用于汇总记录一些看着 ok 的 JS 库. 库名 简介 项目地址 macy.js 仅 4 kb的 原生 流布局插件 http://macyjs.com/ Driver.js 仅 4 ...

随机推荐

  1. TCP概述

    1. TCP提供的服务 我们知道TCP是一个面向连接.提供可靠数据数据传输服务的传输层协议.面向连接意味着发送端和接收端在交换数据前需要建立一个连接,和我们平常打电话一样,在通话前,需要拨号建立连接. ...

  2. 关于Vue+iview的前端简单的导入数据(excel)

    前一段时间项目经历了纯前端处理导入excel文件并处理等问题,数据量大的时候时间上长的一比,三千条数据需要三四秒甚至更长,不管产品咋想的,具体做法为: 首先下载一个这玩意: 进行简单封装一下: < ...

  3. PHP Yii框架中使用smarty模板

    第一种方法 按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事.尝试着把smarty模板加进来了. date_default_timezone_set("PRC") ...

  4. HTML--JS 获取选择框信息

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. CET-6 分频周计划生词筛选(Week 3)

    点我阅读 Week 3 2016.09.11 p113 manipulate + propel p114 expedition + deficit p115 all p116 envisage p11 ...

  6. Socket编程半双工

    服务器 package com.test; import java.io.IOException; import java.net.*; import java.io.*; public class ...

  7. E-puck简单入门

    E-puck是瑞士的一款小型的机器人,可以用于教学和实验,其外形小巧,并且整个结构也比较简单,如果出现损坏也比较容易维护. 其外形如下: 因为国内的资料很少,资料主要还是通过官方文档了解,而官方的文档 ...

  8. [暑假集训Day4T3]曲线

    三分模板. 三分法求单峰函数最优值,之后每次取所有二次函数最优值即可 #pragma GCC optimize(3,"Ofast","inline") #inc ...

  9. 分布式ID增强篇--优化时钟回拨问题

    原生实现 本文承接sharding-jdbc源码之分布式ID,在这篇文章中详细介绍了sharding-jdbc的分布式ID是如何实现的:很遗憾的是sharding-jdbc只是基于snowflake算 ...

  10. ajax中的application/x-www-form-urlencoded中的使用[转]

    一,HTTP上传的基本知识 在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型.下边是说明: application/x-w ...