Coding 2019.09.07

Moment.jsのよく使う関数をピックアップしてみました

記事のアイキャッチ画像

日付処理系ライブラリの決定版と言っても過言ではない「Moment.js」のよく使う関数についてまとめて簡単な使い方サンプルを載せました。

はじめに

Moment.jsを使い始めるときに使い方に迷わないように、よく使う関数をまとめました。

前提

Moment.jsのインストール済みであることが前提です。
まだの方はこちらからインストールしてください。

関数一覧

基本

日付の初期化: moment()

moment()
// -> Mon Jul 29 2019 14:39:19 GMT+0900 (日本標準時)

moment('2019-04-19')
// -> Fri Apr 19 1985 00:00:00 GMT+0900 (日本標準時)

moment(new Date())
// -> Mon Jul 29 2019 14:39:19 GMT+0900 (日本標準時)

moment(moment())
// -> Mon Jul 29 2019 14:39:19 GMT+0900 (日本標準時)

単位別に日付を取得: get()

moment('1985-04-19').get('year');
// -> 1985

moment('1985-04-19').get('month');
// -> 4

moment('1985-04-19').get('date');
// -> 19

日付のフォーマット: format()

moment('1985-04-19').format('YYYY/MM/DD');
// -> 1985/04/19

moment().format('YYYY年MM月DD日(dd)');
// -> 1985年04月19日(金)

日付の演算

たし算: add()

moment('1985-04-19').add(5, 'days').format('YYYY/MM/DD');
// -> 1985/04/24

moment('1985-04-19').add(5, 'month').format('YYYY/MM/DD');
// -> 1985/09/19

moment('1985-04-19').add(5, 'year').format('YYYY/MM/DD');
// -> 1990/04/19

ひき算: subtract()

moment('1985-04-19').subtract(5, 'days').format('YYYY/MM/DD');
// -> 1985/04/14

moment('1985-04-19').subtract(5, 'month').format('YYYY/MM/DD');
// -> 1984/11/19

moment('1985-04-19').subtract(5, 'year').format('YYYY/MM/DD');
// -> 1980/04/19

日付間の期間の計算

単位指定: diff()

const from = moment('1985-04-19');
const to = moment('2019-04-19');

from.diff(to, 'day');
// -> -12418

from.diff(to, 'month');
// -> -408

from.diff(to, 'yaer');
// -> -34

単位自動: from()

const base = moment('1985-04-19');
const from1 = moment('1985-04-25');
const from2 = moment('1985-06-19');
const from3 = moment('2019-04-19');

base.from(from1);
// -> 6日前

base.from(from2);
// -> 2ヶ月前

base.from(from3);
// -> 34年前

指定日付を取得

開始: startOf()

const base = moment('1985-04-19');

base.startOf('day').format('YYYY/MM/DD HH:mm');
// -> 1985/04/19 00:00

base.startOf('month').format('YYYY/MM/DD HH:mm');
// -> 1985/04/01 00:00

base.startOf('year').format('YYYY/MM/DD HH:mm');
// -> 1985/01/01 00:00

終了: endOf()

const base = moment('1985-04-19');

base.endOf('day').format('YYYY/MM/DD HH:mm');
// -> 1985/04/19 23:59

base.endOf('month').format('YYYY/MM/DD HH:mm');
// -> 1985/04/30 23:59

base.endOf('year').format('YYYY/MM/DD HH:mm');
// -> 1985/12/31 23:59

日付の判定

「<」を判定: isBefore()

const date1 = moment('1985-04-19');
const date2 = moment('2019-04-19');

date1.isBefore(date2);
// -> true

「>」を判定: isAfter()

const date1 = moment('1985-04-19');
const date2 = moment('2019-04-19');

date1.isAfter(date2);
// -> false

「==」を判定: isSame()

const date1 = moment('1985-04-19');
const date2 = moment('2019-04-19');

date1.isSame(date2);
// -> false

「<=」を判定: isSameOrBefore()

const date1 = moment('1985-04-19');
const date2 = moment('2019-04-19');

date1.isSameOrBefore(date2);
// -> true

「>=」を判定: isSameOrAfter()

const date1 = moment('1985-04-19');
const date2 = moment('2019-04-19');

date1.isSameOrAfter(date2);
// -> false

指定した日付が2つの日付の間か判定: isBetween()

const base = moment('1985-04-19');
const date2 = moment('2019-04-19');
const date3 = moment('2020-01-01');

base.isBetween(date2, date3);
// -> false

有効な日付か判定: isValid()

moment('2019-02-28').isValid();
// -> true

moment('2019-02-31').isValid();
// -> false

クローン化

moment()を使ってクローン化

const date = moment('2019-04-19');
const clone = moment(date);

クローン関数を使う: clone()

const clone = moment().clone();

どちらのやりかたでも新しくインスタンスを作成しているのでいわゆる参照型のようにクローン元の変更がクローンに反映されることはありません。

さいごに

今回書いた機能たちはほんの一部です。まだまだ使えそうな関数がありますのでぜひ公式サイトを見てみてください。


Category List カテゴリー

Tag List タグ