カテゴリ: C# 更新日: 2025/11/25

C#で日時の加算と減算を完全ガイド!初心者でもわかるDateTimeの使い方

C#で日時の加算・減算を行う方法(AddDays・AddHoursなど)
C#で日時の加算・減算を行う方法(AddDays・AddHoursなど)

先生と生徒の会話形式で理解しよう

生徒

「C#で日時を一日進めたり、三時間戻したりできますか?パソコンのカレンダーみたいに動かせたら便利ですよね?」

先生

「できますよ。C#ではDateTime型に、日付や時間を足したり引いたりする専用のメソッドがあります。」

生徒

「日付や時間を自由に動かせるなら、予約システムとか日記アプリでも使えそうですね。どうやって使うんですか?」

先生

「では、初心者でもわかるように、日時の加算と減算の基本から丁寧に説明していきましょう。」

1. 日時の加算と減算とは?

1. 日時の加算と減算とは?
1. 日時の加算と減算とは?

C#では、日時を扱うためにDateTime(デイトタイム)という型を使います。この型には、日付や時間に対して 「足す」「引く」といった操作を行うためのメソッドが用意されています。たとえば、今日の日付に五日を足したり、 今の時刻から二時間を引いたりできます。これは、予定表やスケジュール管理、締切計算など、さまざまなプログラムで役に立つ基本的な操作です。

日付の操作は、パソコン初心者の方でも「カレンダーの日付を一日進める」「時計を三時間戻す」といったイメージを持つと理解しやすくなります。 実際のプログラムでも同じような感覚で操作できます。

2. AddDaysで日付を増やす・減らす

2. AddDaysで日付を増やす・減らす
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で時間を増減する方法

3. AddHoursで時間を増減する方法
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も覚えておくと便利

4. AddMinutes・AddSeconds・AddMillisecondsも覚えておくと便利
4. AddMinutes・AddSeconds・AddMillisecondsも覚えておくと便利

C#には、分・秒・ミリ秒(千分の一秒)を操作するメソッドも用意されています。 それぞれAddMinutesAddSecondsAddMillisecondsという名前になっています。

例えば、動画プレイヤーの再生位置を「十秒送り」「三十秒戻し」する動作や、計測アプリでミリ秒単位の時間調整が必要なときに使います。 一見むずかしく見えますが、数字を指定して足すだけなのでシンプルです。


DateTime now = DateTime.Now;
DateTime tenSecondsLater = now.AddSeconds(10);
DateTime thirtyMinutesBefore = now.AddMinutes(-30);

5. AddMonths・AddYearsで月や年を操作する

5. AddMonths・AddYearsで月や年を操作する
5. AddMonths・AddYearsで月や年を操作する

月単位や年単位の操作も可能です。たとえば「一年後の契約更新日を計算したい」「三ヶ月後の請求日を求めたい」 といった実用的な処理が簡単にできます。


DateTime today = DateTime.Now;
DateTime nextYear = today.AddYears(1);
DateTime threeMonthsLater = today.AddMonths(3);

月や年を扱うときは「二月(二十八日)」「閏年(二月二十九日)」など特別な日が関係しますが、C#は自動で調整してくれるため、 初心者でも安心して使うことができます。

6. 日時操作でよくあるつまずきポイントも知っておこう

6. 日時操作でよくあるつまずきポイントも知っておこう
6. 日時操作でよくあるつまずきポイントも知っておこう

初心者がよくつまずくのが、日時は「新しい値が返される」ということです。DateTimeは変更不可(イミュータブル)という性質があり、 既存の変数の中身が直接変わるのではなく、必ず新しい日時が返されます。

例えば、次のようにすると元の日時は変化しません。


DateTime date = DateTime.Now;
date.AddDays(1); // これは無視される
Console.WriteLine(date); // 元の日時のまま

このような場合は、戻り値を新しい変数に代入するか、同じ変数に代入し直す必要があります。


date = date.AddDays(1); // 正しく更新する方法

これを覚えておくと、思った通りに動かない問題を防ぐことができます。

カテゴリの一覧へ
新着記事
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
COBOLのUSAGE句(DISPLAY・COMPなど)をやさしく解説!初心者でもわかる効率化の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド