Moment.js教程

Moment.js在管理JavaScript中的日期方面有很大的幫助

Moment.js是一個很棒的JavaScript庫,可幫助您在瀏覽器和Node.js中管理日期。

本文旨在解釋該庫的基礎知識和最常用的用法。

安裝

您可以使用來自unpkg.com的腳本標記將其直接包含在頁面中:

<script src="https://unpkg.com/moment" />

或使用npm

npm install moment

如果您使用npm進行安裝,則需要導入軟件包(使用ES模塊):

import moment from 'moment'

或要求它(使用普通JS):

const moment = require('moment')

獲取當前日期和時間

const date = moment()

解析日期

可以通過將一個字符串對像傳遞給一個日期來對其進行初始化:

const date = moment(string)

它接受根據(按順序)解析的任何字符串:

ISO 8601絕對是最方便的。這是格式參考:

格式 意義 例子
YYYY 4位數字年份 2018
YY 兩位數年份 18歲
中號 2位數字月份號,省略前導0 7
毫米 2位數字月份號 07
MMM 3個字母的月份名稱 七月
MMMM 全月名稱 七月
dddd 全天名稱 星期日
gggg 4位數字的周年 2018
gg 2位數字的星期年 18歲
w 一年中的周,不帶零 18歲
w 一年中的前零週 18歲
Ë Day of the week, starts at 0 4
d 2位數字的日數,省略前導0 9
DD 2位數的日號 09
帶序號的天數 第九名
Ť 指示時間部分的開始
H 2位數小時(24小時制),從0到23 22
H 2位數小時(24小時制),從0到23,前導0 22
kk 2位數小時(24小時制),從1到24 23
ķ 2位數小時(24小時制),從1到24,不加0 23
A / A am或者pm 下午
h 2位數小時(12小時時間) 11
毫米 2位數字分鐘 22
ss 2位數秒 40
s 2位秒,不帶前導零 40
小號 1位數毫秒 1
黨衛軍 2位毫秒 12
SSS 3位數毫秒 123
ž 時區 +02:00
X UNIX時間戳(以毫秒為單位) 1410432140575

設定日期

格式化日期

當您要輸出純JavaScript Date對象的內容時,幾乎沒有什麼選擇可以確定格式。您所能做的就是使用內置方法,並根據需要編寫日期。

Moment提供了一種方便的方式來根據您的需要設置日期格式,方法是使用format()方法:

date.format(string)

字符串格式接受與我在上面的“解析日期”部分中描述的格式相同的格式。

例子:

moment().format("YYYY Do MM")

Moment提供了一些常量,您可以使用它們來代替編寫自己的格式:

持續的 格式 例子
moment.HTML5_FMT.DATETIME_LOCAL YYYY-MM-DDTHH:mm 2017-12-14T16:34
moment.HTML5_FMT.DATETIME_LOCAL_SECONDS YYYY-MM-DDTHH:mm:ss 2017-12-14T16:34:10
moment.HTML5_FMT.DATETIME_LOCAL_MS YYYY-MM-DDTHH:mm:ss.SSS 2017-12-14T16:34:10.234
moment.HTML5_FMT.DATE YYYY-MM-DD 2017-12-14
moment.HTML5_FMT.TIME 高度:毫米 16:34
moment.HTML5_FMT.TIME_SECONDS HH:mm:ss 16:34:10
moment.HTML5_FMT.TIME_MS HH:mm:ss.SSS 16:34:10.234
moment.HTML5_FMT.WEEK YYYY- [W] WW 2017-W50
moment.HTML5_FMT.MONTH YYYY-MM 2017-12

驗證日期

可以使用isValid()方法:

moment('2018-13-23').isValid() //false
moment('2018-11-23').isValid() //true

時間以前,直到日期

使用fromNow()。字符串已本地化:

moment('2016-11-23').fromNow() //2 years ago
moment('2018-05-23').fromNow() //a month ago
moment('2018-11-23').fromNow() //in 5 months

如果你通過true到fromNow()時,它僅顯示差異,而沒有引用future / past。

moment('2016-11-23').fromNow(true) //2 years
moment('2018-05-23').fromNow(true) //a month
moment('2018-11-23').fromNow(true) //5 months

處理日期

您可以在日期中添加或減去任何時間:

moment('2016-11-23').add(1, 'years')
moment('2016-11-23').subtract(1, 'years')

您可以使用這些值:

  • years
  • quarters
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds
  • milliseconds

免費下載我的JavaScript初學者手冊


更多js教程: