RACCOON TECH BLOG

株式会社ラクーンホールディングス 技術戦略部より、
tipsやノウハウなど技術的な話題を
発信いたします。

javascriptで1ヵ月前を計算するにはmoment.jsで!

こんにちは。開発チームの阿部です。

moment.js を使用してこれまで手間の掛かっていた、日付の加算・減算・フォーマットの指定などを簡単に扱える事に感動しました!
Moment.jsの公式

最小のコードで理解しやすく一瞬で出来る日付計算

下記に2020/03/31 (閏年)から1か月前を取得するコードをmoment.jsで書きました。
コードがシンプルで一目で何をしたいのかが理解しやすいです!
従来の方法で、実装すると結構大掛かりで検証が辛かった思い出があります。

<!DOCTYPE HTML>
<html lang="ja">
<head>
<title>moment js について</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.js"></script>
// cdnから読み込むとmomentメソッドが使用できる。
<script>
    // 3/31を単純に月をマイナス1にすると2/31や3/2などになり
    // 期待する2/29にする為に別途計算をする必要がありません!
    console.log(moment('20200331').subtract(1, 'months').format('YYYY/MM/DD'));
    // 2020/02/29

    // ちなみに3/30 3/29 3/28 を指定した例
    console.log(moment('20200330').subtract(1, 'months').format('YYYY/MM/DD'));
    // 2020/02/29

    console.log(moment('20200329').subtract(1, 'months').format('YYYY/MM/DD'));
    // 2020/02/29

    console.log(moment('20200328').subtract(1, 'months').format('YYYY/MM/DD'));
    // 2020/02/28
</script>
</head>
<body></body>
</html>

その他にも減算・加算も楽々! フォーマットの変更も容易です!

日付比較や、日数計算などは使いどころが多そうな予感です!

本日から2年前 format yyyy-mm-dd
※執筆時は2019年7月26日

console.log(moment().subtract(2, 'years').format('YYYY-MM-DD'));

// 2017-07-26

本日から4年後 format yyyy-mm-dd
※執筆時は2019年7月26日

console.log(moment().add(4, 'years').format('YYYY-MM-DD'));

// 2023-07-26

指定日から3か月前 format yyyy年mm月dd日

console.log(moment('20190101').subtract(3, 'months').format('YYYY年MM月DD日'));

// 2018年10月01日

指定日から9か月後 format dd/mm/yyyy

console.log(moment('20190101').add(9, 'months').format('DD/MM/YYYY'));

// 01/10/2019

指定日から10日前 Dateインスタンス表示

console.log(moment('20191231').subtract(10, 'days').toDate());

// Sat Dec 21 2019 00:00:00 GMT+0900 (日本標準時)

指定日から1日後 Dateインスタンス表示

console.log(moment('20191231').add(1, 'days').toDate());

// Wed Jan 01 2020 00:00:00 GMT+0900 (日本標準時)

指定日Aから指定日Bまで何日経過しているか

console.log(moment('20190110').diff(moment('20190101'), 'days'));

// 9

指定日Aが指定日Bより前日

console.log(moment('20190101').isBefore('20190102'));
// true

console.log(moment('20190101').isBefore('20181231'));
// false

指定日Aが指定日Bより後日

console.log(moment('20190101').isAfter('20190102'));
// false

console.log(moment('20190101').isAfter('20181231'));
// true

指定日Aと指定日Bが同じ

console.log(moment('20190101').isSame('20190101'));

// true

など上記以外に公式ドキュメントにはより細かく指定方法や実装方法などが、
書いてありますので是非一度読んでみてください。

関連記事

運営会社:株式会社ラクーンホールディングス(c)2000 RACCOON HOLDINGS, Inc