導入
「登録日」「経過日数」「締め切りまで」——日付や時刻の計算は業務アプリの中心です。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("書式")で整える
次回: 文字列のパターンを扱う「正規表現」です。