Moment.jsを使う

  • 83
    Like
  • 0
    Comment
More than 1 year has passed since last update.

去年にこれ(日付フォーマットなど 日付系処理
書いたんだけど(思いの外ストックされた)、
これはライブラリ使用承認プロセスがとても難儀な環境の時書いたもので、
もしそんな悲しい環境でないなら先人たちの素晴らしいライブラリを使ったほうがいい。
ライブラリを使ういいところは、コーダの独自実装になりにくいし、他のプロジェクトでも知見が使い回しできるところだと思う。

ということでMoment.jsの使い方について書いておく。

Moment.js

GitHubにおいて、現在(2015/1)日付を処理するライブラリの中で多分一番Starがついてる日付系のライブラリ。人気が有るということは正義っぽい。
Qiitaにもたくさん記事ある

公式ドキュメントはこちら。
http://momentjs.com/docs/

Moment.jsはJavaScriptDateオブジェクトをラップするオブジェクトを生成して、そのオブジェクトに日付処理を任せることが出来る。使い方はDateオブジェクトの代わりにmoment()を呼び出してMomentオブジェクトを生成するだけ。

Momentオブジェクト
var now = moment();
console.log(now.toDate()); // Dateオブジェクトが返される

// 文字列からも生成できるし
var shougatsu = moment('2015-01-01');
console.log(shougatsu.toString()); // "Thu Jan 01 2015 00:00:00 GMT+0900"

// もちろんDateオブジェクトからも生成できる
var kodomonohi = moment(new Date('2015-05-05'));
console.log(kodomonohi.toString()); // "Tue May 05 2015 09:00:00 GMT+0900"

日付をフォーマットする

moment.format
var date = moment('2015-01-23');
date.format("MM月DD日"); // "01月23日"

フォーマットの書式は以下。
http://momentjs.com/docs/#/parsing/string-format/

日付を加算する

moment.add
var date = moment('2015-01-23');
date.add(1, "months").format("YYYY-MM-DD"); // 2015-02-23

第二引数に指定するキー('months'とか'days')とかは以下。ショートハンドもある。
http://momentjs.com/docs/#/manipulating/add/

2つの日付の差を計算する

moment.diff
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