0Pricing
C# Academy · レッスン

日付の計算

日付を加算、減算、比較します。

「日付の計算」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

日付を使った計算

DateTime の値は不変です。計算によって元の値が変更されることはありません。その代わり、すべての操作はまったく新しい DateTime を返します。

このレッスンでは、時間の加算と減算、日付の比較、イベントまであと何日かといった問いへの答え方を学びます。

AddDays

AddDays メソッドは、指定した日数だけ後の日付を返します。過去の日付に移動するには、負の数を渡します。

DateTime は不変なので、返された値を使用する必要があります。元の値は変更されません。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        DateTime later = d.AddDays(10);
        Console.WriteLine(later.ToString("yyyy-MM-dd"));
    }
}

Add 系メソッド

単位ごとに Add メソッドがあります。AddHours、AddMinutes、AddSeconds、AddMonths、AddYears などです。

いずれも正の数と負の数を受け取るため、未来と過去の両方に対応する一連のメソッドとして使用できます。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        Console.WriteLine(d.AddHours(5).Hour);
    }
}

AddMonths による月末日の調整

AddMonths は月の日数を適切に処理します。1月31日に1か月を加えると、無効な日付ではなく2月28日または29日になります。

これにより、各月の日数を手動で確認する必要がなくなります。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 1, 31);
        Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
    }
}

過去の日付への移動

過去に移動するには、負の引数を渡します。AddDays(-7) は1週間前の日付を返します。

日数を減算する専用の Subtract メソッドはありません。負の値を使えば簡潔に対応できます。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
    }
}

TimeSpan の加算

+ 演算子または Add メソッドを使って、TimeSpan を DateTime に直接加算できます。

すでに時間間隔があり、それを使って日付を移動したい場合に便利です。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime later = d + TimeSpan.FromHours(3);
        Console.WriteLine(later.Hour);
    }
}

日付間の差

ある日付から別の日付を減算すると、その間隔を表す TimeSpan が生成されます。

TotalDays を読み取ると、月や年をまたぐ場合でも、2つの日付の間の日数を数えられます。

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 1, 1);
        DateTime end = new DateTime(2024, 3, 1);
        Console.WriteLine((end - start).TotalDays);
    }
}

イベントまでの日数

よくある処理として、未来の日付までの日数を数える方法があります。今日の日付を目標の日付から減算し、TotalDays または Days を読み取ります。

ここでは固定の日付を使うことで、学習時の出力を予測しやすくしています。

using System;

class Program
{
    static void Main()
    {
        DateTime today = new DateTime(2024, 3, 1);
        DateTime party = new DateTime(2024, 3, 15);
        Console.WriteLine((party - today).Days);
    }
}

日付の比較

DateTime の値は <、>、== で比較できます。過去の日付は、未来の日付より小さい値です。

比較結果を明示的に取得する必要がある場合は、CompareTo や Equals などのメソッドも使用できます。

using System;

class Program
{
    static void Main()
    {
        DateTime a = new DateTime(2024, 1, 1);
        DateTime b = new DateTime(2024, 6, 1);
        Console.WriteLine(a < b);
    }
}

うるう年と月の日数

暦に関する問いに答える静的ヘルパーが2つあります。DateTime.IsLeapYear(year) は、指定した年がうるう年であれば true を返します。

DateTime.DaysInMonth(year, month) は、指定した月の日数を返し、2月も正しく処理します。

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(DateTime.IsLeapYear(2024));
        Console.WriteLine(DateTime.DaysInMonth(2024, 2));
    }
}

日の始まりと終わり

日の始まりを取得するには、時刻を午前0時に切り捨てる Date プロパティを使用します。

日の最後の瞬間を取得するには、1日を加えてから1ティック減算するか、23:59:59を加えます。Date プロパティは、これらの処理の基本となる最も簡単な方法です。

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
        Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
    }
}

確認問題

2024年1月31日を開始日にして AddMonths(1) を呼び出すと、どの日付になりますか。

まとめ

DateTime の計算は新しい値を返します。AddDays、AddMonths などを使って日付を移動し、過去に移動する場合は負の値を使用します。

日付を減算すると TimeSpan が得られます。演算子で比較し、IsLeapYear、DaysInMonth、Date を暦に関する処理に使用できます。

よくある質問

「日付の計算」レッスンは無料ですか?

はい。「日付の計算」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「日付の計算」で何を学びますか?

日付を加算、減算、比較します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「日付の計算」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DateTimeを作成する
  2. 日付をフォーマットする
  3. TimeSpanと期間
  4. 日付の計算
← C# Academyに戻る