Help us understand the problem. What is going on with this article?

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
taizo
ruby,javascript,go とかウェブサービスに関わる小さな話を書いていきます。 最近はGoばかりやってます。基本はメモ。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした