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();
どちらのやりかたでも新しくインスタンスを作成しているのでいわゆる参照型のようにクローン元の変更がクローンに反映されることはありません。
さいごに
今回書いた機能たちはほんの一部です。まだまだ使えそうな関数がありますのでぜひ公式サイトを見てみてください。