C#のDateTimeから「月」や「時間」だけを取り出す、簡単な方法
C#で日時を扱う際、DateTimeオブジェクトは「2025年11月13日 15時30分45秒」のように、日付と時刻を一つのセットとして保持しています。
しかし、実際の開発では、このDateTime全体ではなく、
「**“月”**だけを取得して、月別の集計をしたい」
「**“時間”**だけを取り出して、特定の時間帯のログを分析したい」
「**“曜日”**を判定して、週末か平日かで処理を変えたい」
といったように、「特定の日時要素(コンポーネント)」だけが個別に必要になる場面が非常に多くあります。
DateTimeが持つ「プロパティ」という便利な機能
DateTimeオブジェクトは、これらのニーズに答えるため、各要素に直接アクセスできる「プロパティ」を標準で備えています。 これらのプロパティにアクセスするだけで、欲しい部分の値をint型(整数)として簡単に取り出すことができます。
.Year (年を取得)
.Month (月を取得、1~12)
.Day (日を取得、1~31)
.Hour (時を取得、0~23)
.Minute (分を取得、0~59)
.Second (秒を取得、0~59)
.Millisecond (ミリ秒を取得、0~999)
if (logTimestamp.Hour == 15) のように、if文や計算で非常に直感的に扱うことができます。
日付だけ、曜日だけが欲しい場合は?
DateTimeには、さらに便利なプロパティが用意されています。
.Date プロパティ logTimestamp.Date のようにアクセスすると、元のDateTimeから時刻情報(時・分・秒)だけをキレイに切り捨てた(00:00:00にした)、**「その日の日付」**を表す新しいDateTimeオブジェクトを取得できます。 日付単位でデータを比較・集計する際に非常に便利です。
.DayOfWeek プロパティ logTimestamp.DayOfWeek のようにアクセスすると、その日付の「曜日」を、DayOfWeek.Sunday(日曜日)やDayOfWeek.Monday(月曜日)といった専用の「列挙型」として返します。 これにより、if (weekDay == DayOfWeek.Saturday) のような、非常に読みやすい曜日判定が可能になります。
続きはブログで:具体的なC#コードと実行結果
この記事では、DateTimeオブジェクトから各要素を取り出すための「プロパティ」の「概念」についてご紹介しました。
「では、logTimestamp.YearやlogTimestamp.Hourを実際に取得する、C#のサンプルコードは?」 「.Dateプロパティを使うと、時刻が0:00:00になる様子をコードで確認したい」 「.DayOfWeekプロパティを使って、『平日です』『週末です』と判定する、if文の具体的な書き方は?」
と思われた方もいらっしゃるかと思います。
私の運営する技術ブログでは、この記事の続きとして、DateTimeオブジェクトを作成し、.Yearから.Millisecondまでの各プロパティ、そして**.Dateと.DayOfWeekを取得する具体的なC#サンプルコードと、その実行結果**を詳しく解説しています。
日時データを自在に扱うための基本テクニックです。詳細は、ぜひ以下のリンクからご覧ください。
▼ブログ記事はこちら 【C#】DateTimeから年・月・日・時・分・秒を個別に取得するプロパティ一覧
