【C#】DateTime.AddDaysでN日後・N日前の日付を計算する方法

目次

日付の加算・減算

C#で日付データを扱う際、「特定の基準日からN日後の日付を求めたい」(例: 登録日から30日後の有効期限)や、「N日前の日付を計算したい」(例: 本日から7日前の日付)といった日付計算は非常に一般的な処理です。

DateTime構造体は、このような日付の加算・減算を簡単に行うためにAddDaysメソッドを提供しています。


DateTime.AddDays(double value) メソッド

AddDaysメソッドは、DateTimeオブジェクトに対して、指定した日数(double型)を加算します。

  • valueに正の数(例: 10)を指定すると、10日後の未来の日付が返されます。
  • valueに負の数(例: -7)を指定すると、7日前の過去の日付が返されます。

重要な特性:DateTimeの不変性(Immutable)

DateTime構造体は**不変(Immutable)**です。AddDaysメソッドは、元のDateTimeオブジェクトを直接変更しません

代わりに、計算結果として得られる新しいDateTimeオブジェクトを戻り値として返します。したがって、計算結果を利用するには、必ず新しい変数に代入するか、元の変数に再代入する必要があります。


コード例1:N日後を求める(未来の日付)

AddDaysに正の数を渡して、未来の日付を計算する例です。プロジェクトの開始日(startDate)から90日後のリリース予定日(releaseDate)を計算します。

using System;

public class AddDaysFutureExample
{
    public static void Main()
    {
        // 基準日: 2025年10月1日
        DateTime startDate = new DateTime(2025, 10, 1);

        double daysToAdd = 90.0;

        // 90日後を計算
        // AddDaysは新しいDateTimeインスタンスを返す
        DateTime releaseDate = startDate.AddDays(daysToAdd);

        Console.WriteLine($"プロジェクト開始日: {startDate:yyyy/MM/dd}");
        Console.WriteLine($"リリース予定日 (90日後): {releaseDate:yyyy/MM/dd}");
    }
}

出力結果:

プロジェクト開始日: 2025/10/01
リリース予定日 (90日後): 2025/12/30

コード例2:N日前を求める(過去の日付)

AddDaysに負の数を渡すことで、過去の日付を簡単に計算できます。DateTime.Today(今日の日付)から、14日前の日付を取得する例です。

using System;

public class AddDaysPastExample
{
    public static void Main()
    {
        // 基準日: 今日 (この例では 2025/11/13 と仮定)
        DateTime today = DateTime.Today;

        double daysToSubtract = -14.0;

        // 14日前を計算
        DateTime twoWeeksAgo = today.AddDays(daysToSubtract);

        Console.WriteLine($"今日の日付: {today:yyyy/MM/dd}");
        Console.WriteLine($"14日前の日付: {twoWeeksAgo:yyyy/MM/dd}");
    }
}

出力結果(仮に今日が2025/11/13の場合):

今日の日付: 2025/11/13
14日前の日付: 2025/10/30

補足:AddDays以外のAddメソッド

DateTime構造体は、AddDays以外にも、特定の部分(月、時、分など)を加算・減算するためのメソッドを多数提供しています。基本的な使い方はAddDaysと同じです(負の数を渡せば減算になります)。

  • AddMonths(int months): Nヶ月後/Nヶ月前
  • AddYears(int years): N年後/N年前
  • AddHours(double hours): N時間後/N時間前
  • AddMinutes(double minutes): N分後/N分前
  • AddSeconds(double seconds): N秒後/N秒前

まとめ

DateTime.AddDays(double value)メソッドは、C#で日付の加算・減算(N日後・N日前)を行うための最も標準的で簡単な方法です。

  • 正の数で未来を、負の数で過去の日付を計算できます。
  • DateTimeの不変性(Immutable)により、元の値は変更されず、常に新しいDateTimeオブジェクトが返される点に注意が必要です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次