[JavaScript] moment.jsで日付時刻操作を行うTips

概要

JavaScriptのdateオブジェクトは中々に使いづらい。moment.jsはそれを非常に使いやすい形にラッピングしたモジュールである。本記事では、私はmoment.jsを使って業務で役立った使い方を備忘録代わりにまとめる。

前提

以下環境で動作確認済み

node 5.12.0
npm 3.8.6
moment.js 2.19.4
Chrome 63.0

moment.jsのインストール

本記事ではnpmを使う

$ npm install --save moment

moment.jsを使う

const moment = require('moment')

あるいは

import moment from 'moment'

現在時刻のmomentオブジェクトを生成

momentオブジェクトはjavaScriptのdateオブジェクトをラッピングしたオブジェクト

moment()
// moment("2018-02-04T14:06:32.809")

時刻文字列からmomentオブジェクトを生成

moment('1992-05-29')
// moment('1992-05-29 13:10:15')
moment('1992-05-29 13:10:15')
// moment("1992-05-29T13:10:15.000")

dateオブジェクトからmomentオブジェクトを生成

moment(new Date())
// moment("2018-02-04T14:17:30.672")

momentオブジェクトからdateオブジェクトを生成

moment().toDate()
// Sun Feb 04 2018 14:17:13 GMT+0000 (UTC)

年月日や時刻を取得

moment()
// moment("2018-02-04T14:12:57.506")
moment().year()
// 2018
moment().month()
// 1 ← 1月が0なので注意
moment().date()
// 4 ← dayだと曜日番号になるので注意
moment().day()
// 0 ← 日曜日が0

年月日や時刻を設定

moment()
// moment("2018-02-04T14:14:05.528")
moment().year(1992).month(4).date(29).hour(13).minutes(10).second(20)
// moment("1992-05-29T13:10:20.900") ← 月が1ずれるので注意

相対日付を取得

現在時刻から見た1年後の3日前を取得する。
durationメソッドで「期間」を用意しておき、momentオブジェクトに対してaddメソッド、subtractメソッドを用いて相対的なmomentオブジェクトを取得できる。

const oneYear = moment.duration(1, 'years')
const threeDay = moment.duration(3, 'days')
moment()
// moment("2018-02-04T14:10:48.701")
moment().add(oneYear).subtract(threeDay)
// moment("2019-02-01T14:47:10.419")

日付と日付の差分を取得する

momentオブジェクトのdiffメソッドで、対象となるmomentオブジェクトを渡してあげると、その差を秒で取得することができる。

const from = moment('1992-05-29')
const to = moment()
to.diff(from)
// 810658205231

diffメソッドに第二引数を指定すると、形式を指定できる。

to.diff(from, 'year')
// 25 ← 差が25年
to.diff(from, 'day')
// 9382 ← 差が9382日

フォーマットを指定して文字列を取得

moment().format('YYYY-MM-DD')
// '2018-02-04'
moment().format('hh:mm:ss')
// '02:07:14'

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です