C#で曜日を取得する方法(DayOfWeek)を学ぼう|初心者でもわかる日時操作
生徒
「C#で今日の曜日を調べる方法ってありますか?アプリで日付を表示するときに曜日も出したいんです。」
先生
「もちろんできますよ。C#には曜日を取得するための便利な仕組みが用意されています。」
生徒
「どうやって取得するんですか?むずかしそうに聞こえます…。」
先生
「大丈夫です。初心者でも簡単に使えるDayOfWeekという仕組みがあるので、いっしょに見ていきましょう。」
1. C#で曜日を取得する仕組みとは?
C#では、日付と時間を扱うときに便利なDateTime構造体というものを使います。これは、コンピューターの中で日付を管理するための入れ物のようなものです。このDateTime型には、日付だけでなく「曜日」も含まれています。
そして曜日を取り出すためのプロパティがDayOfWeekです。このDayOfWeekは「列挙体(れっきょたい)」と呼ばれる特別な種類の値で、月曜日・火曜日・水曜日などが決まった名前で並べられています。列挙体とは、「決められた選択肢の集合」のようなもので、プログラムにわかりやすい名前をつけるために使われます。
例えばDateTime.TodayからDayOfWeekを取り出すと、今日が月曜日ならDayOfWeek.Mondayという値が得られます。このような分かりやすい名前が用意されていることで、初心者でも簡単に曜日を扱うことができます。
2. DayOfWeekを使って曜日を取得する基本
それでは実際にC#のコードで曜日を取得してみましょう。まずは今日の日付を取得し、そこから曜日だけを取り出す基本形です。初心者でもわかりやすいコードになっています。
var today = DateTime.Today;
var dayOfWeek = today.DayOfWeek;
Console.WriteLine(dayOfWeek);
このコードを実行すると、プログラムは今日の日付を取得し、DayOfWeekプロパティから曜日を取り出して表示します。例えば、「Wednesday」というように英語表記で出力されます。
● 実行例
Wednesday
DayOfWeekは英語表記で返されるため、日本語で曜日を表示したい場合は自分で変換する必要があります。ここも初心者がつまづきやすい部分なので、次の章で丁寧に解説します。
3. DayOfWeekを日本語の曜日に変換しよう
英語のままではアプリに表示するときに不便なことがあります。そこで、DayOfWeekの値を日本語の曜日に変換する方法を紹介します。変換にはswitch文や配列を使う方法がありますが、今回は初心者が理解しやすい方法で説明します。
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);
これで「月曜日」や「火曜日」のように日本語で表示できるようになります。初心者の方でも、曜日ごとにどのような値が対応しているのか理解しやすい書き方です。
● 実行例
水曜日
日本語表示に対応すると、カレンダーアプリやスケジュール管理、ToDoリストなど実用的なプログラムにも応用できます。曜日の情報は日付とセットで使うことが多く、現場でもよく利用される便利な知識ですから、このタイミングでしっかり理解しておくと役立ちます。
4. 任意の日付の曜日を取得する方法
今日の曜日だけでなく、未来や過去の日付の曜日を知りたいこともあります。そんなときもDateTimeを使えば簡単に調べられます。誕生日の曜日を調べたり、イベントの日付が何曜日なのかを確認したりできます。
var date = new DateTime(2025, 5, 10);
var dayOfWeek = date.DayOfWeek;
Console.WriteLine(dayOfWeek);
このように日付を指定するだけで、どんな日でも曜日を確認できます。プログラムの中でイベント管理をしたり、日程の自動計算をしたりするときにとても便利です。
● 実行例
Saturday
この仕組みを利用すると、日付計算と曜日の判定を組み合わせて、より複雑なスケジュール機能を作ることもできます。まずは曜日の取得にしっかり慣れておくことが大切です。