Moment.js で簡単に日付操作する
Moment.js というライブラリがある。JavaScript のクセがある Date 型に対して、直感的に日付操作ができるライブラリだ。
特に日付のフォーマットが手軽なのでオススメだ。例えば現在の日時を「YYYY-MM-DD HH:mm:ss
」という形式の文字列で取得する場合、生の JavaScript だと以下のような書き方になる。
var d = d.getFullYear()
var result = d.getFullYear()
+ '-' + ('0' + (d.getMonth() + 1)).slice(-2)
+ '-' + ('0' + d.getDate()).slice(-2)
+ ' ' + ('0' + d.getHours()).slice(-2)
+ ':' + ('0' + d.getMinutes()).slice(-2)
+ ':' + ('0' + d.getSeconds()).slice(-2);
必ず2桁で表現するために文字列 '0'
を結合して slice(-2)
で右から2桁を拾うようにしている。getMonth()
に関しては0からのカウントなので + 1
する必要がある。
これを Moment.js で得るには以下のように書くだけだ。
var result = moment().format('YYYY-MM-DD HH:mm:ss');
moment()
で生成できるオブジェクトは、内部的に Date オブジェクトを持っているので、Moment.js で操作してから結果を Date 型で得たりすることもできる。
var now = moment();
var nowDate = now.toDate();
また、moment()
の引数に日付文字列を渡すとそれっぽく解釈してくれるので、型変換も楽チンである。
var d = moment('2017-06-04');
format()
を使う際、HH
だと24時間表記、hh
だと12時間表記の時刻が返されるので、ご注意いただきたい (これで半日近く時刻が狂う問題に悩まされてしまった…)。