C#で曜日を取得する方法(DayOfWeek)を学ぼう|初心者でもわかる日時操作
生徒
「C#で今日の曜日を調べる方法ってありますか?アプリで日付を表示するときに曜日も出したいんです。」
先生
「もちろんできますよ。C#には曜日を取得するための便利な仕組みが用意されています。」
生徒
「どうやって取得するんですか?むずかしそうに聞こえます…。」
先生
「大丈夫です。初心者でも簡単に使えるDayOfWeekという仕組みがあるので、いっしょに見ていきましょう。」
1. C#で曜日を取得する仕組みとは?
C#では、日付や時間を扱うためにDateTime構造体を使用します。 DateTimeは、単に「日付」を表すだけでなく、「年・月・日・時刻・曜日」といった情報をまとめて管理できる便利な型です。 プログラミング未経験の方でも、「カレンダーの情報をそのまま持っている箱」と考えるとイメージしやすいでしょう。
このDateTimeの中に含まれている曜日情報を取り出すために使うのが、DayOfWeekプロパティです。 DayOfWeekは「列挙体(れっきょたい)」と呼ばれる仕組みで、月曜日・火曜日・水曜日といった 曜日があらかじめ決まった名前として定義されています。 そのため、数値を覚える必要がなく、コードを見ただけで意味が分かるのが大きな特徴です。
例えば、今日の日付を表すDateTime.TodayからDayOfWeekを取得すると、
今日が月曜日ならDayOfWeek.Mondayという値が返ってきます。
このように、人が読んで理解しやすい形で曜日を扱えるため、
C#では初心者でも安心して曜日判定の処理を書くことができます。
// 今日の曜日を取得する最もシンプルな例
var today = DateTime.Today;
Console.WriteLine(today.DayOfWeek);
このコードを実行すると、現在の日付から曜日が自動的に判定されて表示されます。 まずは「DateTimeから曜日を取り出せる」という仕組みを理解することが、 DayOfWeekを使いこなす第一歩になります。
2. DayOfWeekを使って曜日を取得する基本
それでは、実際にC#のプログラムを使って曜日を取得してみましょう。 ここでは一番シンプルな方法として、「今日の日付」から曜日を取り出す手順を確認します。 プログラミングが初めての方でも、「今日の日付を取得する → そこから曜日を見る」という流れを意識すると理解しやすくなります。
まずDateTime.Todayを使うことで、現在の日付を取得できます。
この値には年・月・日だけでなく、内部的に曜日の情報も含まれているため、
そこからDayOfWeekプロパティを呼び出すだけで、今日が何曜日なのかを簡単に調べることができます。
// 今日の日付を取得して曜日を表示する基本例
var today = DateTime.Today;
var dayOfWeek = today.DayOfWeek;
Console.WriteLine(dayOfWeek);
このコードでは、まず今日の日付を変数に入れ、その日付から曜日を取り出しています。 難しい計算や特別な設定は一切不要で、「DayOfWeekを呼び出すだけ」という点が初心者にとって大きな安心ポイントです。
● 実行例
Wednesday
実行結果を見ると、このように曜日が英語で表示されます。 これはDayOfWeekがプログラム内部で使いやすい形式になっているためです。 最初は英語表記に少し戸惑うかもしれませんが、 「曜日を正しく取得できているか」を確認するには十分な情報と言えるでしょう。
まずはこの基本形をしっかり理解し、 「C#ではDayOfWeekを使えば簡単に曜日が分かる」という感覚を身につけることが大切です。
3. DayOfWeekを日本語の曜日に変換しよう
DayOfWeekを使って曜日を取得すると、結果は「Monday」や「Wednesday」といった英語表記になります。 プログラムの内部処理としては問題ありませんが、実際に画面へ表示する場合は、 日本語の「月曜日」「水曜日」のほうが利用者にとって分かりやすいことがほとんどです。 そのため、アプリやツールを作るときには、日本語表記への変換処理を用意しておくと親切です。
ここでは初心者でも読みやすく、処理の流れが理解しやすい方法として、
switch式を使った変換例を紹介します。
曜日ごとに対応する日本語を明示的に書くことで、
「どの曜日がどの文字列になるのか」が一目で分かるのが特徴です。
// DayOfWeekの値を日本語の曜日に変換する例
var today = DateTime.Today;
var dayOfWeek = today.DayOfWeek;
string japaneseDay = dayOfWeek switch
{
DayOfWeek.Monday => "月曜日",
DayOfWeek.Tuesday => "火曜日",
DayOfWeek.Wednesday => "水曜日",
DayOfWeek.Thursday => "木曜日",
DayOfWeek.Friday => "金曜日",
DayOfWeek.Saturday => "土曜日",
DayOfWeek.Sunday => "日曜日",
_ => ""
};
Console.WriteLine(japaneseDay);
このコードでは、取得したDayOfWeekの値に応じて、日本語の曜日名を割り当てています。 列挙体の名前と日本語が並んでいるため、初心者でも対応関係を把握しやすく、 後から見返したときにも理解しやすい書き方です。
● 実行例
水曜日
このように日本語表示に変換しておくことで、カレンダー表示や予定一覧、 学習用アプリなど、実際の画面表示でそのまま使える形になります。 「曜日を日本語で扱えるようになる」という点は、 日付処理を実用レベルに引き上げる大切なステップと言えるでしょう。
4. 任意の日付の曜日を取得する方法
今日の曜日だけでなく、未来や過去の日付の曜日を知りたいこともあります。そんなときもDateTimeを使えば簡単に調べられます。誕生日の曜日を調べたり、イベントの日付が何曜日なのかを確認したりできます。
var date = new DateTime(2025, 5, 10);
var dayOfWeek = date.DayOfWeek;
Console.WriteLine(dayOfWeek);
このように日付を指定するだけで、どんな日でも曜日を確認できます。プログラムの中でイベント管理をしたり、日程の自動計算をしたりするときにとても便利です。
● 実行例
Saturday
この仕組みを利用すると、日付計算と曜日の判定を組み合わせて、より複雑なスケジュール機能を作ることもできます。まずは曜日の取得にしっかり慣れておくことが大切です。
5. 曜日を使った条件分岐の基本
曜日を取得できるようになると、「平日か休日かで処理を分けたい」という場面が出てきます。
例えば、土日だけメッセージを変えたり、平日のみ処理を実行したりするケースです。
DayOfWeekは列挙体なので、条件分岐ととても相性が良く、初心者でも直感的に書けます。
var today = DateTime.Today;
var day = today.DayOfWeek;
if (day == DayOfWeek.Saturday || day == DayOfWeek.Sunday)
{
Console.WriteLine("今日は休日です");
}
else
{
Console.WriteLine("今日は平日です");
}
このように曜日を条件にすることで、カレンダーアプリや業務システムなど、 実際の開発現場でもよく使われる処理が書けるようになります。 まずは「曜日で分岐できる」という感覚を身につけることが大切です。
6. 曜日を数値として扱うときの注意点
DayOfWeekは見た目では文字列のように見えますが、
内部的には数値としても扱われています。
日曜日が0、月曜日が1というように、曜日ごとに決まった番号が割り当てられています。
この仕組みを知っておくと、曜日の並びを扱うときに役立ちます。
var today = DateTime.Today;
int dayNumber = (int)today.DayOfWeek;
Console.WriteLine(dayNumber);
このコードを実行すると、曜日に対応した数値が表示されます。
ただし、数値だけで判断すると分かりにくくなることもあるため、
基本的にはDayOfWeek.Mondayのような名前付きの書き方をおすすめします。
数値は補助的な知識として覚えておくと安心です。
7. 曜日取得を活用した実用的な使いどころ
曜日を取得する処理は、単体で使うだけでなく、他の日時操作と組み合わせることで力を発揮します。 例えば、スケジュール管理アプリでは日付と曜日をセットで表示することが一般的です。 また、予約システムや勤怠管理では、曜日によって受付可否を変えるケースもあります。
var date = DateTime.Today;
var day = date.DayOfWeek;
Console.WriteLine($"{date:yyyy/MM/dd} は {day} です");
このように日付と曜日を組み合わせて表示するだけでも、 情報がぐっと分かりやすくなります。 DayOfWeekの基本を理解しておくことで、 日時を扱うさまざまなプログラムに応用できるようになるでしょう。
まとめ
C#で曜日を取得する仕組みを振り返ろう
この記事では、C#で曜日を取得する方法について、DateTime構造体とDayOfWeekプロパティを中心に、
初心者向けに丁寧に解説してきました。曜日の取得は一見すると細かい処理に思えるかもしれませんが、
実際のアプリ開発では非常によく使われる重要な日時操作の一つです。
カレンダー表示、スケジュール管理、勤怠管理、タスク管理アプリなど、
日付と曜日を組み合わせて表示する場面は数多く存在します。
C#では、日付と時間をまとめて扱えるDateTime型を使うことで、
今日の日付や任意の日付を簡単に取得できます。
そして、そのDateTime型が持つDayOfWeekプロパティを使えば、
その日が何曜日なのかをプログラムから簡単に知ることができます。
DayOfWeekは列挙体として定義されており、
MondayやTuesdayといった分かりやすい名前で曜日を扱える点が特徴です。
英語表記と日本語表記の違いを理解する
DayOfWeekで取得できる曜日は、基本的に英語表記で返されます。 そのため、プログラム内部の処理としては問題なくても、 画面に表示する場合には日本語へ変換したほうが利用者にとって親切です。 記事の中で紹介したように、switch文を使って日本語の曜日へ変換する方法は、 初心者でも理解しやすく、実務でもよく使われる書き方です。 曜日を日本語で表示できるようになると、 アプリの見た目や使いやすさが大きく向上します。
任意の日付から曜日を取得できる強み
今日の曜日だけでなく、過去や未来の曜日を取得できる点もDateTimeの大きな魅力です。 誕生日が何曜日だったのかを調べたり、 イベント開催日が週末か平日かを判定したりする処理も、 DateTimeとDayOfWeekを組み合わせるだけで簡単に実現できます。 この考え方を応用すれば、 「土日の場合は処理を変える」「平日のみ実行する処理を作る」といった 実用的なロジックにもつなげることができます。
まとめとしてのサンプルプログラム
最後に、この記事で学んだ内容をまとめたシンプルなサンプルコードを確認してみましょう。 今日の日付から曜日を取得し、日本語で表示する一連の流れをまとめています。
var today = DateTime.Today;
var dayOfWeek = today.DayOfWeek;
string japaneseDay = dayOfWeek switch
{
DayOfWeek.Monday => "月曜日",
DayOfWeek.Tuesday => "火曜日",
DayOfWeek.Wednesday => "水曜日",
DayOfWeek.Thursday => "木曜日",
DayOfWeek.Friday => "金曜日",
DayOfWeek.Saturday => "土曜日",
DayOfWeek.Sunday => "日曜日",
_ => ""
};
Console.WriteLine(japaneseDay);
このように、DateTimeとDayOfWeekを正しく使えるようになると、 日付処理に対する苦手意識が大きく減ります。 曜日取得は日時操作の入り口としてとても良いテーマなので、 ぜひ実際にコードを書きながら理解を深めてみてください。
生徒:「曜日って、こんなに簡単に取れるんですね。難しい計算が必要だと思っていました。」
先生:「DateTimeとDayOfWeekを使えば、C#が自動で計算してくれます。」
生徒:「英語の曜日が返ってくる理由も分かりました。表示用に日本語へ変換すればいいんですね。」
先生:「その通りです。内部処理と画面表示を分けて考えるのがポイントですよ。」
生徒:「任意の日付の曜日も調べられるなら、スケジュール管理にも使えそうです。」
先生:「とても良い視点ですね。曜日の取得は実務でも頻繁に使うので、しっかり身につけておきましょう。」