去年にこれ(日付フォーマットなど 日付系処理)
書いたんだけど(思いの外ストックされた)、
これはライブラリ使用承認プロセスがとても難儀な環境の時書いたもので、
もしそんな悲しい環境でないなら先人たちの素晴らしいライブラリを使ったほうがいい。
ライブラリを使ういいところは、コーダの独自実装になりにくいし、他のプロジェクトでも知見が使い回しできるところだと思う。
ということでMoment.jsの使い方について書いておく。
Moment.js
GitHubにおいて、現在(2015/1)日付を処理するライブラリの中で多分一番Starがついてる日付系のライブラリ。人気が有るということは正義っぽい。
Qiitaにもたくさん記事ある。
公式ドキュメントはこちら。
http://momentjs.com/docs/
Moment.jsはJavaScript
のDate
オブジェクトをラップするオブジェクトを生成して、そのオブジェクトに日付処理を任せることが出来る。使い方はDate
オブジェクトの代わりに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"
日付をフォーマットする
var date = moment('2015-01-23');
date.format("MM月DD日"); // "01月23日"
フォーマットの書式は以下。
http://momentjs.com/docs/#/parsing/string-format/
日付を加算する
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つの日付の差を計算する
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