【C#】DateTime.DayOfWeekプロパティで曜日を判定する方法 (Sunday, Monday…)

目次

DateTimeから曜日を取得する

C#で日付データを扱う際、その日付が「何曜日」であるかに基づいて処理を分岐させたいケースは非常に一般的です。例えば、「土曜日または日曜日の場合は週末料金を適用する」や、「月曜日の場合は週次レポートを作成する」といったロジックです。

DateTime構造体は、この曜日判定を簡単に行うために DayOfWeek プロパティを提供しています。


DayOfWeek プロパティと DayOfWeek 列挙型

DateTimeオブジェクト(例: DateTime.Now や特定の日付)の DayOfWeek プロパティにアクセスすると、その日付の曜日が返されます。

このプロパティの戻り値の型は int(整数)ではなく、DayOfWeek という専用の「列挙型(enum)」です。

DayOfWeek 列挙型には、以下の7つのメンバーが定義されています。

  • DayOfWeek.Sunday (内部的な値は 0)
  • DayOfWeek.Monday (1)
  • DayOfWeek.Tuesday (2)
  • DayOfWeek.Wednesday (3)
  • DayOfWeek.Thursday (4)
  • DayOfWeek.Friday (5)
  • DayOfWeek.Saturday (6)

コード例1:曜日の取得と表示

DateTimeオブジェクトから DayOfWeek を取得し、その値をコンソールに出力する基本的な例です。DayOfWeek 型変数をそのまま Console.WriteLine などで出力すると、”Sunday” や “Monday” といった英語の曜日名を表す文字列に自動的に変換されます。

using System;

public class DayOfWeekBasicExample
{
    public static void Main()
    {
        // 判定対象の日付 (2025年11月16日)
        DateTime targetDate = new DateTime(2025, 11, 16);

        // .DayOfWeek プロパティで曜日を取得
        DayOfWeek weekday = targetDate.DayOfWeek;

        Console.WriteLine($"対象の日付: {targetDate:yyyy/MM/dd}");
        
        // 列挙型の値をそのまま出力すると、曜日名(英語)になる
        Console.WriteLine($"曜日 (DayOfWeek): {weekday}"); 
    }
}

出力結果:

対象の日付: 2025/11/16
曜日 (DayOfWeek): Sunday

コード例2:if文やswitch文による曜日の判定

DayOfWeek プロパティの真価は、if文やswitch文と組み合わせて、曜日に基づく条件分岐を行う際に発揮されます。

if文による週末判定

取得した曜日が DayOfWeek.Saturday または DayOfWeek.Sunday であるかを比較し、週末かどうかを判定する実用的な例です。

using System;

public class DayOfWeekCheckExample
{
    public static void Main()
    {
        // DateTime.Now.DayOfWeek で「今日」の曜日を判定
        DayOfWeek today = DateTime.Now.DayOfWeek;

        Console.WriteLine($"今日は {today} です。");

        // if文で週末かどうかを判定
        if (today == DayOfWeek.Saturday || today == DayOfWeek.Sunday)
        {
            Console.WriteLine("本日は週末料金が適用されます。");
        }
        else
        {
            Console.WriteLine("本日は平日料金です。");
        }
    }
}

(注: このコードを実行する日によって出力結果は変わります)

switch文による判定

switch文(または C# 8.0以降の switch式)を使用すると、曜日ごとに異なる処理をより明確に記述できます。

using System;

public class DayOfWeekSwitchExample
{
    public static void Main()
    {
        DateTime targetDate = new DateTime(2025, 11, 19); // 2025年11月19日 (水曜日)
        DayOfWeek weekday = targetDate.DayOfWeek;

        string schedule = "";

        // switch文で曜日ごとに処理を分岐
        switch (weekday)
        {
            case DayOfWeek.Monday:
                schedule = "週次ミーティング";
                break;
            case DayOfWeek.Wednesday:
            case DayOfWeek.Friday:
                schedule = "リリース日";
                break;
            case DayOfWeek.Saturday:
            case DayOfWeek.Sunday:
                schedule = "休業日";
                break;
            default:
                schedule = "通常業務";
                break;
        }

        Console.WriteLine($"日付 {targetDate:d} の予定: {schedule}");
    }
}

出力結果:

日付 2025/11/19 の予定: リリース日

まとめ

DateTime.DayOfWeek プロパティは、DateTimeオブジェクトが持つ曜日情報を、DayOfWeek列挙型として簡単に取得できる機能です。

if文やswitch文で DayOfWeek.MondayDayOfWeek.Sunday といったメンバーと比較することで、曜日に応じたビジネスロジック(週末判定、特定曜日のタスク実行など)を安全かつ直感的に実装できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次