一、概念: 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') // 0 end_date.diff(start_date, 'weeks') // 1 end_date.diff(start_date, 'days') // 7 start_date.diff(end_date, 'days') // -7
8、moment對象 轉化為JavaScript原生 Date對象:
moment().toDate() new Date(moment())
其他的還有一些 功能,但是不常用,這里就不介紹了,感興趣的話,可以去官網查看。