310
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Moment.jsを使う

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

ということで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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
310
Help us understand the problem. What are the problem?