[note] moment-js 筆記
keywords: time
, date
, datetime
npm install moment
momentJS @ official
❗ 選擇使用 momentJS 前建議可以考慮更輕量的套件,可參考 Why you shouldn't use Moment.js 和 You Don't Need MomentJS。
目錄
[TOC]
API
Parse
// parse time
var now = moment() // moment("2018-01-03T12:07:48.350")
var day = moment('2017-01-06') // moment("2017-01-06T00:00:00.000")
Get and Set
moment().year(2017).month(3).date(12); // moment("2017-04-12T13:58:34.641")
moment().year(2018).month(0).date(1).hours(0).minutes(0).seconds(0).milliseconds(0); // moment("2018-01-01T00:00:00.000")
Display
keywords: format
, escape
Format Table @ MomentJS
moment().format(); // '2018-01-03T14:03:42+08:00' (ISO 8601)
moment().format('HHmm'); // '1405'
moment().format('YYYYMMDD'); // '20180103'
moment().format('YYYY-MM-DD HH:mm'); // '2018-01-03 14:23'
// escape character
moment().format('[today] dddd'); // 'today Wednesday'
moment().format('today dddd'); // 'to3pmy Wednesday'
跳脫字元
使用 []
可以將單字跳脫解析:
// escape character
moment().format('[today] dddd'); // 'today Wednesday'
moment().format('today dddd'); // 'to3pmy Wednesday'
Query
keywords: isBefore
, isSame
, isAfter
, isSameOrBefore
, isSameOrAfter
, isBetween
, isLeapYear
, 比較時間
# 第二個參數可用來定義比較到哪個位數
moment().isBefore(Moment|String|Number|Date|Array[, String])
// 字串作為參數
moment('2010-10-20').isBefore('2010-10-21'); // true
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isBefore('2011-01-01', 'year'); // true
// moment 物件作為參數
let momentTime1 = moment().hours(23);
let momentTime2 = moment().hours(22);
momentTime1.isBefore(momentTime2);
Utilities
Keywords: isMoment
, isDate
, isValid
moment.isMoment(<momentObj>)
:用來檢驗是否為 Moment 的物件moment.isDate(<dateObj>)
:用來檢驗是否為 JS 的原生日期物件moment(<momentFormat>).isValid()
:檢驗是否為正確的 moment 格式
i18n
moment.locale('zh-tw'); // 將語系設定到全域
moment().format('YYYY/MM/DD[(]dd[)]HH:mm'); // 2018/02/22(四)16:57
moment().format('LLLL'); // LLLL : 'YYYY年MMMD日ddddAh點mm分',
其它用法可參考 zh-tw @ momentjs-rails
常用功能
取得當下時間
keywords: now
/**
* 取得當下時間
**/
let now = moment();
now.format(); // 2018-02-27T10:18:04+08:00
取得兩時間點差距
keywords: toNow(Boolean)
, fromNow(Boolean)
當 toNow()
和 fromNow()
帶入參數 true
時,不會回傳 prefix,因此回傳的時間會一樣:
let theDay = moment('2018-3-12');
moment().format(); // 取得現在時間:2018-02-27T10:30:20+08:00
theDay.fromNow(); // in 13 days
theDay.toNow(); // 13 days ago
theDay.fromNow(true); // 13 days
theDay.toNow(true); // 13 days