Posted at

momentで時間データの操作を楽にする

More than 5 years have passed since last update.

http://momentjs.com/

javascriptで時刻操作や表現をしたい場合のライブラリ


install

npm install moment   # npm

bower install moment # bower


使い方


現在時刻を文字列で取得

http://momentjs.com/docs/#/displaying/format/

formatを使うことで、好きな形式で文字列を得ることが出来る。

var moment = require("moment");

// 現在時刻を取得する例
moment().format(); // 2014-07-16T09:00:00+09:00 (default)
moment().format("YYYY-MM-DD"), // 2014-07-17
moment().format("YYYY-MM-DD HH:mm:ssZ"), // 2014-07-17 10:00:00+09:00
moment().format("dddd, MMMM Do YYYY, h:mm:ss a") // "Thursday, July 17th 2014, 10:00:00 am”

format以外も、色々な形式で取得可能

moment().toDate()      // Date型で取得

moment().unix() // unix timestampで取得
moment().toISOString() // `2014-07-17T10:00:00.964Z` ISO8601 フォーマットの文字列で取得


パース

http://momentjs.com/docs/#/parsing/

moment()に文字列などを渡すことで、指定した時刻オブジェクトを生成できる

moment()                       // デフォルト: 現在時刻

moment("2013-02-08T09:30:26") // 文字列で設定
moment({years: 2013, months: 2, days: 8, hours: 9, minutes: 30, seconds: 26}) // オブジェクトで設定
moment(1404817278000) // UNIX時間 (ミリ秒)
moment.unix(1404817278) // UNIX時間 (秒)
moment(new Date(2014, 7,8)) // Date
moment([2014, 7, 8]) // Array

設定した値から正しくパース出来ているかはisValid()で確認出来る。

moment("not a real date").isValid(); // false


UTC

デフォルトのタイムゾーンはシステム依存。

UTCで取得したい場合は utc() を使う。

最初に設定した時刻をUTCに変更も出来るし、

moment.utc()を使って、最初からUTCとして時刻を取り扱うことも出来る。

moment("2014-03-01 12:00:00").format();       // 2014-03-01T12:00:00+09:00

moment("2014-03-01 12:00:00").utc().format(); // 2014-03-01T00:00:00+09:00
moment.utc("2014-03-01 12:00:00").format() // 2014-03-01T12:00:00+00:00


日時操作

http://momentjs.com/docs/#/manipulating/

add()などを使って、日時のプラスマイナスを指定することが出来る

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