C# - 曜日を取得する

曜日を取得するには、DateTime構造体の DayOfWeekプロパティ を使用するか、ToStringメソッド の引数に 書式"ddd" を指定します。

曜日を取得する方法

DateTime構造体 の DayOfWeekプロパティ は 曜日 を DayOfWeek列挙型(enum) で返します。
// DateTime.DayOfWeek の使用方法
DayOfWeek 曜日 = DateTimeオブジェクト.DayOfWeek;
DayOfWeek 列挙型(enum)
名前 意味
Sunday 0 日曜日
Monday 1 月曜日
Tuesday 2 火曜日
Wednesday 3 水曜日
Thursday 4 木曜日
Friday 5 金曜日
Saturday 6 土曜日

サンプルコード

2024年12月1日の曜日を取得し、表示します。
// 2024年12月1日でDateTimeのインスタンス作成
DateTime date = new DateTime(2024, 12, 1);

// 曜日を取得(DayOfWeek列挙型)
DayOfWeek result = date.DayOfWeek;

// DayOfWeek列挙型を分岐で日本語に
string week = "";
if (result == DayOfWeek.Sunday)
{
    week = "日";
}
else if (result == DayOfWeek.Monday)
{
    week = "月";
}
else if (result == DayOfWeek.Tuesday)
{
    week = "火";
}
else if (result == DayOfWeek.Wednesday)
{
    week = "水";
}
else if (result == DayOfWeek.Thursday)
{
    week = "木";
}
else if (result == DayOfWeek.Friday)
{
    week = "金";
}
else if (result == DayOfWeek.Saturday)
{
    week = "土";
}

// 結果="2024年12月1日は日曜日"
Console.WriteLine($"{date.Year}年{date.Month}月{date.Day}日は{week}曜日");
サンプルコードの実行結果(Visual Studio)
サンプルコードの実行結果(Visual Studio)

分岐は使用せず、配列で

列挙型を数値にするには、int型でキャストします。
int 数値(0-6) = (int)DayOfWeek列挙型の値;

サンプルコード

2025年12月1日の曜日を取得し、表示します。
// 2025年12月1日でDateTimeのインスタンス作成
DateTime date = new DateTime(2025, 12, 1);

// 曜日を取得(DayOfWeek列挙型)
DayOfWeek result = date.DayOfWeek;

// DayOfWeek列挙型を日本語に
string[] weeks = { "日", "月", "火", "水", "木", "金", "土" };
string week = weeks[(int)result];

// 結果="2025年12月1日は月曜日"
Console.WriteLine($"2025年12月1日は{week}曜日");

キャストが禁止されている場合はDictionaryで

Dictionaryを使用するとキャストは不要になります。
Dictionary<DayOfWeek, string>()

サンプルコード

2024年12月1日の曜日を取得し、表示します。
// 2026年12月1日でDateTimeのインスタンス作成
DateTime date = new DateTime(2026, 12, 1);

// 曜日を取得(DayOfWeek列挙型)
DayOfWeek result = date.DayOfWeek;

// DayOfWeek列挙型を日本語に
var weekDict = new Dictionary<DayOfWeek, string>()
{
    { DayOfWeek.Sunday, "日"},
    { DayOfWeek.Monday, "月"},
    { DayOfWeek.Tuesday, "火"},
    { DayOfWeek.Wednesday, "水"},
    { DayOfWeek.Thursday, "木"},
    { DayOfWeek.Friday, "金"},
    { DayOfWeek.Saturday, "土"}
};
string week = weekDict[result];

// 結果="2026年12月1日は火曜日"
Console.WriteLine($"2026年12月1日は{week}曜日");

表示だけでいい場合は ToStringメソッド

ToStringメソッド に "ddd" または "dddd" を渡すと 曜日を文字列 で返します。"dddd" の場合、曜日が短く省略されて 返されます。OSの言語設定が 日本語の場合は漢字 で結果を返しますが、英語の場合は英語 で返します。
// 結果はOSの言語設定で変わる
string 曜日("月"~"日") = DateTimeオブジェクト.ToString("ddd");
string 曜日("月曜日"~"日曜日") = DateTimeオブジェクト.ToString("dddd");

OSの言語設定に関係なく日本語で取得するには、ToStringメソッドの第2引数にカルチャーを指定します。

// 日本語で表示
var cultureJa = System.Globalization.CultureInfo.GetCultureInfo("ja");

// 結果="2027年12月01日は水"
Console.WriteLine(date.ToString("yyyy年MM月dd日はddd", cultureJa));

// 結果="2027年12月01日は水曜日"
Console.WriteLine(date.ToString("yyyy年MM月dd日はdddd", cultureJa));

次のサンプルはOSの言語設定に関係なく英語で表示します。

// 英語で表示
var cultureEnUS = System.Globalization.CultureInfo.GetCultureInfo("en-us");

// 結果="2027年12月01日はWed"
Console.WriteLine(date.ToString("yyyy年MM月dd日はddd", cultureEnUS));

// 結果="2027年12月01日はWednesday"
Console.WriteLine(date.ToString("yyyy年MM月dd日はdddd", cultureEnUS));
サンプルコードの実行結果(Visual Studio)
サンプルコードの実行結果(Visual Studio)

検証環境