曜日を取得する方法
DateTime構造体 の DayOfWeekプロパティ は 曜日 を DayOfWeek列挙型(enum) で返します。// DateTime.DayOfWeek の使用方法
DayOfWeek 曜日 = DateTimeオブジェクト.DayOfWeek;
名前 | 値 | 意味 |
---|---|---|
Sunday | 0 | 日曜日 |
Monday | 1 | 月曜日 |
Tuesday | 2 | 火曜日 |
Wednesday | 3 | 水曜日 |
Thursday | 4 | 木曜日 |
Friday | 5 | 金曜日 |
Saturday | 6 | 土曜日 |
サンプルコード
2025年01月1日の曜日を取得し、表示します。// 2025年01月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 = "土";
}
// 結果="2025年01月1日は日曜日"
Console.WriteLine($"{date.Year}年{date.Month}月{date.Day}日は{week}曜日");

分岐は使用せず、配列で
列挙型を数値にするには、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>()
サンプルコード
2025年01月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));

検証環境
- .NET 6.0
- Microsoft Visual Studio Enterprise 2022 Version 17.2.6
- Microsoft Windows 10 Enterprise Version 21H2 OS Build 19044.1826 Experience: Windows Feature Experience Pack 120.2212.4180.0