C#で日時の加算と減算を完全ガイド!初心者でもわかるDateTimeの使い方
生徒
「C#で日時を一日進めたり、三時間戻したりできますか?パソコンのカレンダーみたいに動かせたら便利ですよね?」
先生
「できますよ。C#ではDateTime型に、日付や時間を足したり引いたりする専用のメソッドがあります。」
生徒
「日付や時間を自由に動かせるなら、予約システムとか日記アプリでも使えそうですね。どうやって使うんですか?」
先生
「では、初心者でもわかるように、日時の加算と減算の基本から丁寧に説明していきましょう。」
1. 日時の加算と減算とは?
C#では、日時を扱うためにDateTime(デイトタイム)という型を使います。この型には、日付や時間に対して
「足す」「引く」といった操作を行うためのメソッドが用意されています。たとえば、今日の日付に五日を足したり、
今の時刻から二時間を引いたりできます。これは、予定表やスケジュール管理、締切計算など、さまざまなプログラムで役に立つ基本的な操作です。
日付の操作は、パソコン初心者の方でも「カレンダーの日付を一日進める」「時計を三時間戻す」といったイメージを持つと理解しやすくなります。 実際のプログラムでも同じような感覚で操作できます。
2. AddDaysで日付を増やす・減らす
最もよく使うのがAddDaysメソッドです。これは日数を足したり引いたりする操作です。
マイナスの数値を入れると過去の日付に戻すことができます。
例えば、「三日後の予定を知りたい」「七日前の日付を計算したい」などの処理を簡単にできます。
DateTime today = DateTime.Now;
DateTime threeDaysLater = today.AddDays(3);
DateTime sevenDaysBefore = today.AddDays(-7);
Console.WriteLine(threeDaysLater);
Console.WriteLine(sevenDaysBefore);
2025/11/21 21:30:00
2025/11/11 21:30:00
このように、AddDaysは日数を簡単に操作できるので、日付計算の基本として覚えておくと便利です。予定表アプリや日付の繰り返し処理でも頻繁に使われます。
3. AddHoursで時間を増減する方法
時間単位の調整をしたい場合はAddHoursを使います。たとえば、「二時間後の時刻を表示する」「五時間前のログを調べる」
といった処理を簡単に実装できます。
DateTime now = DateTime.Now;
DateTime twoHoursLater = now.AddHours(2);
DateTime fiveHoursBefore = now.AddHours(-5);
Console.WriteLine(twoHoursLater);
Console.WriteLine(fiveHoursBefore);
2025/11/18 23:30:00
2025/11/18 16:30:00
AddHoursは、時間単位で予定を変更したり、ログの時間帯を調整したりと、あらゆる場面で活躍します。分単位や秒単位にも同じような操作が可能です。
4. AddMinutes・AddSeconds・AddMillisecondsも覚えておくと便利
C#には、分・秒・ミリ秒(千分の一秒)を操作するメソッドも用意されています。
それぞれAddMinutes、AddSeconds、AddMillisecondsという名前になっています。
例えば、動画プレイヤーの再生位置を「十秒送り」「三十秒戻し」する動作や、計測アプリでミリ秒単位の時間調整が必要なときに使います。 一見むずかしく見えますが、数字を指定して足すだけなのでシンプルです。
DateTime now = DateTime.Now;
DateTime tenSecondsLater = now.AddSeconds(10);
DateTime thirtyMinutesBefore = now.AddMinutes(-30);
5. AddMonths・AddYearsで月や年を操作する
月単位や年単位の操作も可能です。たとえば「一年後の契約更新日を計算したい」「三ヶ月後の請求日を求めたい」 といった実用的な処理が簡単にできます。
DateTime today = DateTime.Now;
DateTime nextYear = today.AddYears(1);
DateTime threeMonthsLater = today.AddMonths(3);
月や年を扱うときは「二月(二十八日)」「閏年(二月二十九日)」など特別な日が関係しますが、C#は自動で調整してくれるため、 初心者でも安心して使うことができます。
6. 日時操作でよくあるつまずきポイントも知っておこう
初心者がよくつまずくのが、日時は「新しい値が返される」ということです。DateTimeは変更不可(イミュータブル)という性質があり、
既存の変数の中身が直接変わるのではなく、必ず新しい日時が返されます。
例えば、次のようにすると元の日時は変化しません。
DateTime date = DateTime.Now;
date.AddDays(1); // これは無視される
Console.WriteLine(date); // 元の日時のまま
このような場合は、戻り値を新しい変数に代入するか、同じ変数に代入し直す必要があります。
date = date.AddDays(1); // 正しく更新する方法
これを覚えておくと、思った通りに動かない問題を防ぐことができます。
まとめ
日時の加算と減算を理解するとできることが一気に広がる
ここまで、C#における日時の加算と減算について、DateTime型を中心に詳しく学んできました。
日時の操作は一見すると難しそうに感じるかもしれませんが、実際には「日付を進める」「時間を戻す」といった、
私たちが普段カレンダーや時計で行っている感覚とほぼ同じです。
C#では、その感覚をそのままプログラムに落とし込めるように、AddDays、AddHours、
AddMinutes、AddMonths、AddYearsといった分かりやすいメソッドが用意されています。
これらを正しく使えるようになることで、スケジュール管理、予約システム、期限計算、ログ解析など、
実務でもよく使われる処理をスムーズに実装できるようになります。
Add系メソッドの共通した考え方
今回紹介した日時操作のメソッドには、すべて共通した考え方があります。
それは「数値を指定して足す、マイナスを指定すると引く」というシンプルな仕組みです。
例えば、AddDays(3)は三日後、AddDays(-7)は七日前というように、
数字を見るだけで動きが想像できるのが特徴です。
また、分や秒、ミリ秒といった細かい単位も同じ考え方で操作できるため、
一度理解してしまえば応用はそれほど難しくありません。
日時処理で大切なのは、個々のメソッドを丸暗記することではなく、
「日時に対してどの単位を、どれだけ動かしたいのか」を意識することです。
DateTimeは変更されない点に注意しよう
初心者が特につまずきやすいポイントとして、DateTimeは変更不可であるという性質があります。
AddDaysやAddHoursを呼び出しても、元の日時が直接書き換わるわけではありません。
必ず新しい日時が返されるため、その戻り値を変数に代入しなければ処理結果は反映されません。
この仕組みを知らないと、「コードを書いたのに日時が変わらない」という混乱が起きやすくなります。
逆に言えば、この特徴を理解していれば、意図しない日時の変更を防ぐことができ、
安全で予測しやすいプログラムを書くことにつながります。
まとめとして確認したいサンプルプログラム
最後に、日時の加算と減算を組み合わせたシンプルなサンプルを振り返っておきましょう。 現在日時から数日後、数時間前を求める基本的な例です。
DateTime baseDate = DateTime.Now;
DateTime afterFiveDays = baseDate.AddDays(5);
DateTime beforeTwoHours = baseDate.AddHours(-2);
Console.WriteLine(afterFiveDays);
Console.WriteLine(beforeTwoHours);
このように、基準となる日時を一つ決めておけば、そこから自由に日時を動かすことができます。 実際のアプリケーションでは、ユーザーが入力した日時や、データベースから取得した日時を基準にして、 さまざまな計算を行うケースが多くあります。 今回学んだ内容は、その土台となる重要な知識です。
生徒
「日時の計算って難しいと思っていましたが、AddDaysやAddHoursを使えば、 カレンダーを操作する感覚で書けるんですね。」
先生
「そうですね。まずは日や時間を動かす基本がわかれば、 予約管理や期限計算なども自然と書けるようになります。」
生徒
「DateTimeは勝手に変わらないから、戻り値を代入する必要がある点も印象に残りました。」
先生
「そこはとても大事なポイントです。 この仕組みを理解していると、日時処理でのミスが一気に減りますよ。」
生徒
「これからは、スケジュールや時間計算が必要なプログラムにも自信を持って挑戦できそうです。」
先生
「その意気です。日時操作は多くの場面で使われるので、 しっかり身につけておくと必ず役に立ちます。」