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