本文へスキップ
BecomeCoder

C#文法コース · 第8章 標準ライブラリの必需品 · レッスン56

日付と時刻(DateTime / TimeSpan / DateOnly)

ブラウザで完結

導入

「登録日」「経過日数」「締め切りまで」——日付や時刻の計算は業務アプリの中心です。C#ではDateTime(日時)・TimeSpan(時間の長さ)・DateOnly(日付だけ)で扱い、書式指定で表示を整えます。

図解

flowchart LR
    D1["DateTime 開始"] -->|引き算| SPAN["TimeSpan(期間)"]
    D2["DateTime 終了"] -->|引き算| SPAN
    D1 -->|AddDays / AddHours| D3["未来・過去の日時"]
    D1 -->|ToString("書式")| STR["整形した文字列"]

サンプル

var date = new DateTime(2026, 7, 16, 9, 30, 0);   // 年月日 時分秒

Console.WriteLine(date.Year);                      // 2026
Console.WriteLine(date.DayOfWeek);                 // Thursday(曜日)
Console.WriteLine(date.ToString("yyyy/MM/dd"));    // 2026/07/16(書式指定)

// 日時の加算
var later = date.AddDays(10);
Console.WriteLine(later.ToString("MM/dd"));         // 07/26

// 2つの日時の差は TimeSpan(期間)
TimeSpan span = later - date;
Console.WriteLine(span.Days);                       // 10

// DateOnly: 時刻を持たない「日付だけ」の型
var birthday = new DateOnly(2000, 12, 25);
Console.WriteLine(birthday.ToString("yyyy-MM-dd"));  // 2000-12-25
  • DateTimeは日時。.Year/.Month/.DayOfWeekなどで各要素を取り出せる
  • AddDays/AddHoursで加減算、日時同士の引き算はTimeSpan(期間)になる
  • 表示はToString("yyyy/MM/dd")のような書式指定で整える
  • 時刻不要ならDateOnly(日付だけ)・TimeOnly(時刻だけ)を使うと意図が明確

演習

var start = new DateTime(2026, 1, 1);
var end = new DateTime(2026, 1, 31);

// TODO: start から end までの日数を出力してください(30)
___
  • 期待される出力: 30
ヒント1を見る

日時の引き算はTimeSpanになり、.Daysで日数が取れます

ヒント2を見る

Console.WriteLine((end - start).Days);

まとめ

  • 日時はDateTime、期間はTimeSpan、日付だけはDateOnly
  • AddDays等で加減算、引き算で期間を求める
  • 表示はToString("書式")で整える

次回: 文字列のパターンを扱う「正規表現」です。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。