ライブラリ不要!JavaScriptで日付に日数を加算する方法
JavaScriptで日付に1日(または任意の日数)を加算するには、組み込みのsetDateメソッドを使うのが最もシンプルで確実な方法です。外部ライブラリは一切不要で、標準のDateオブジェクトだけで実現できます。
ここでは、Dateオブジェクトのプロトタイプに独自メソッドを追加して、どの日付オブジェクトからでも簡単に日数を加減算できるようにする実装を紹介します。
実装例:addDaysメソッドを定義する
Date.prototype.addDays = function(days) {
let d = new Date(this.valueOf());
d.setDate(d.getDate() + days);
return d;
}
let date = new Date();
console.log(date.addDays(1)); // 翌日の日付が出力されるコードのポイント
- new Date(this.valueOf()) で元のDateオブジェクトのコピーを作成しているため、呼び出し元の日付オブジェクトは変更されません(イミュータブルな操作になります)。
- setDate() は月や年の境界を自動的に処理します。たとえば1月31日に1日を加算すると、正しく2月1日になります。うるう年も考慮されるので、2月28日の翌日は適切に判定されます。
- 負の値を渡せば、日付を過去に遡ることもできます。
date.addDays(-7)とすれば1週間前の日付が取得できます。
プロトタイプ拡張を避けたい場合
Date.prototypeへの追加を避けたい場合は、通常の関数として定義しても同じことができます。
function addDays(date, days) {
const d = new Date(date);
d.setDate(d.getDate() + days);
return d;
}
const tomorrow = addDays(new Date(), 1);
console.log(tomorrow);どちらの方法でも、setDateの自動的な繰り上げ処理のおかげで、月末や年末・うるう年などを意識することなく安全に日付計算が行えます。Moment.jsのようなライブラリを導入しなくても、これくらいのシンプルさで十分実用的です。
-
JavaScriptでさまざまな日付形式を扱う方法|サンプルコード付きで解説
JavaScriptで日付を扱う際は、組み込みのDateオブジェクトを使用します。Dateコンストラクタにさまざまな形式の文字列を渡すことで、それぞれの形式に応じた日付オブジェクトを生成できます。ここでは、複数の日付形式を実際にページへ表示するサンプルコードを紹介します。コード例<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wi
-
JavaScriptのimportで波括弧「{}」を使う理由とは?名前付きエクスポートの基本をわかりやすく解説
JavaScript(ESモジュール)でモジュールを読み込む際、import 文に波括弧 { } を付けるかどうか迷ったことはありませんか?実はこの波括弧は、名前付きエクスポート(named export)を読み込むために必要な記法です。本記事では、実際のコード例を使いながら、{ } の役割と使い方を詳しく解説します。 importで { } を使う場面とは JavaScriptのESモジュールでは、エクスポート方法によって読み込み側の書き方が変わります。 名前付きエクスポート:export { 関数名 } のようにエクスポートされたものを読み込む場合は、import { 名前 } fro