【JavaScript】日付の計算を簡単に処理したい
問題
JavaScriptの日付の 1日足す、1日引く、1年足す、1か月引くなどの処理を簡単にやりたい。
答え
JavaScriptで1日後を計算するには、素直に対応すると以下のようになるわけですが、
var d = new Date();
d.setDate(d.getDate() + 1);
外部のライブラリを使えるなら moment.js を使うと簡単です。
もし自力でライブラリを作ろうとしていたら、moment.js を導入したほうが早いかもしれません。気になるのは多機能な分容量が少し大きいくらい。
ダウンロードしてくるか、
CDNを利用するなら以下を追記してさっそく使えます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
以下が可能。
- フォーマット
- 差の算出
- 日付の加算、減算
- 多言語対応(日本語も対応)
使い方は、Date()の代わりにmoment()を使うだけ。
// moment.js である日から1か月3日後を計算する
var d = moment('2019-08-10').add(3, 'days').add(1, 'months');
d.toString();
// → "Fri Sep 13 2019 00:00:00 GMT+0900"
// moment.js である日から1か月3日後を計算する
var d = moment('2019-08-10').add({days:3,months:1});
d.toString();
// → "Fri Sep 13 2019 00:00:00 GMT+0900"
素のJavaScriptで。
// 素のJavaScriptである日から1か月3日後を計算する
var d = new Date('2019-08-10')
d.setDate(d.getDate() + 3)
d.setMonth(d.getMonth() + 1)
d.toString();
// → "Fri Sep 13 2019 09:00:00 GMT+0900 (日本標準時)"
月末なども簡単に求められる。
var d = moment('2019-09-15');
d.format('YYYY-MM-DD');
// → "2019-09-30"
整形も簡単。
var d = moment();
d.format('YYYY-MM-DD HH:mm:ss');
// → "2019-08-13 05:47:06"
コメント