tech.chakapoko.com
Home / Node.js / 日時

[JavaScript][Node.js]Moment.js の使い方。日付や時刻の計算、文字列と日時の相互変換など

Moment.js のインストール

Moment.js は次のコマンドでインストールできます。

$ npm install --save moment

現在時刻を取得して文字列として表示する

moment.js で現在時刻は moment() で取得できます。さらに format メソッドで文字列に変換できます。

const moment = require("moment");

const m = moment();
console.log(m.format()); // => 2019-06-17T21:21:54+09:00
console.log(m.format("YYYY-MM-DD HH:mm:ss")); // => 2019-06-17 21:21:54

文字列をパースして時刻に変換する

moment() の引数に文字列を渡すとその文字列をパースして時刻に変換してくれます。

const moment = require("moment");

const m = moment("2019-06-18 10:01:34");
console.log(m.format()); // => 2019-06-18T10:01:34+09:00

日時の計算を行う

add メソッドや year メソッドを使って日時の計算を行うことができます。

各メソッドの呼び出しはチェーンできるのが便利です。

const moment = require("moment");

const m = moment("2019-06-18 10:01:34");

console.log(m.add(1, "hour").format()); // => 2019-06-18T11:01:34+09:00
console.log(m.add(-1, "day").format()); // => 2019-06-17T11:01:34+09:00
console.log(m.year(2020).minute(2).format()); // => 2020-06-17T11:02:34+09:00

メソッドを呼び出すとインスタンス (上のコード内の m) の状態が変わっていることには注意が必要です。

計算を行う前に clone メソッドを使って先にインスタンスをコピーしておくと安全です。

const moment = require("moment");

const m = moment("2019-06-18 10:01:34");

console.log(m.clone().add(1, "hour").format()); // => 2019-06-18T11:01:34+09:00
console.log(m.clone().add(-1, "day").format()); // => 2019-06-17T10:01:34+09:00
console.log(m.clone().year(2020).minute(2).format()); // => 2020-06-18T10:02:34+09:00

日時の比較を行う

isBefore, isAfter, isSame などのメソッドで日時の比較を行えます。

const moment = require("moment");

const m1 = moment("2019-06-18 10:01:34");
const m2 = moment("2019-06-18 10:02:34");

console.log(m1.isBefore(m2)); // => true
console.log(m1.isAfter(m2)); // => false
console.log(m1.isSame(m2)); // => false
console.log(m1.isSameOrBefore(m2)); // => true