背景
GitHubにおいて、現在(2017/12)日付を処理するライブラリの中で
多分 一番Starがついてる日付系のライブラリ。
概要
Moment.jsはJavaScriptの Dateオブジェクトをラップするオブジェクトを生成して、
そのオブジェクトに日付処理を任せることが出来る。
使い方はDateオブジェクトの代わりにmoment()を呼び出してMomentオブジェクトを生成するだけ。
インストール
npm install moment # npm
使い方
(1) 現在時刻を文字列で取得
moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA"); // "Sun, 3PM"
moment('gibberish').format('YYYY MM DD'); // "Invalid date"
その他の format
設定はこちらまで。
(2) 文字列からmomentを生成する
moment('2017-12-12');
(3) Dateオブジェクトからmomentを生成する
moment(new Date('2017-12-12'));
(4) オブジェクトからmomentを生成する
moment({years: 2017, months: 12, days: 12, hours: 7, minutes: 7, seconds: 7})
(5) 配列(ARRAY) からmomentを生成する
moment([2014, 7, 8]) // Array
(6) UNIX時間からmomentを生成する
moment(1404817278000) // UNIX時間 (ミリ秒)
moment.unix(1404817278) // UNIX時間 (秒)
(7) momentをDateオブジェクトに変換する
var now = moment();
console.log(now.toDate()); // Dateオブジェクトが返される
(8) unix timestampで取得
moment().unix()
(9) ISO8601 フォーマットの文字列で取得
moment().toISOString() // `2014-07-17T10:00:00.964Z` ISO8601 フォーマットの文字列で取得
(10) UTC
moment("2014-03-01 12:00:00").utc().format();
moment.utc("2014-03-01 12:00:00").format();
(11) 日付を比較
moment('2010-10-20').isBefore('2010-10-21'); // true
moment('2010-10-20').isBefore('2010-12-31', 'year'); // false
moment('2010-10-20').isSame('2010-10-20'); // true
moment('2010-10-20').isSame('2010-01-01', 'year'); // true
moment('2010-01-01').isSame('2011-01-01', 'month'); // false, different year 2番目のパラメータは比較単位を指定できる(`month`と指定する場合は、 `year`と`month`をチェックする)
moment('2010-01-01').isSame('2010-02-01', 'day'); // false, different month
isBefore
関数とセットで isAfter
、isSameOrBefore
、
isSameOrAfter
、isBetween
関数も用意されている。
(12) 差分を計算する
var fromDate = moment('2014-01-01 0:00');
var toDate = moment('2015-01-01 12:00');
toDate.diff(fromDate, 'days'); // 365
// 第三引数にtrueを渡すと少数まで計算してくれる
toDate.diff(fromDate, 'days', true); // 365.5
// 第二引数を省略するとmsを返す
toDate.diff(fromDate); // 31579200000
(12) 日付を操作(加算・減算)する
moment("2014-04-01").add('days', 1).format() // 2014-04-02T00:00:00+09:00 (1日後)
moment("2014-04-01").add('days', -1).format() // 2014-03-31T00:00:00+09:00 (1日前)
// メソッドチェーンで操作可能
moment("2014-04-01").add("M", 1).add("d", 2).format() // 2014-05-03T00:00:00+09:00
公式ドキュメント
参考になったリンク
https://qiita.com/osakanafish/items/5ef636bbcb2c3ef94953
https://qiita.com/taizo/items/3a5505308ca2e303c099