C# | ゼロからはじめるプログラミング、30日で基礎を学ぶC#:基本機能を身に付ける - Day14:日時処理の練習問題

C# 30日で身につけるC#
スポンサーリンク
スポンサーリンク

Day14 日時処理・練習問題と解答解説

Day14 で学んだ DateTime と TimeSpan を確実に身につけるために、 初心者でも理解しやすい練習問題と丁寧な解答・解説をまとめています。 日時処理は実用アプリで必ず使う重要な機能ですので、ここでしっかり定着させてください。

DateTime の基本を確認する

問題

現在の日時を取得し、 「現在の日時は ○○ です」と表示してください。

解答と解説

DateTime now = DateTime.Now;
Console.WriteLine("現在の日時は " + now + " です");
C#

DateTime.Now は「今この瞬間の日時」を取得します。 日時処理の出発点となる最も基本的なプロパティです。

DateTime の特定日付作成

問題

1990年5月20日の DateTime を作成し、表示してください。

解答と解説

DateTime birthday = new DateTime(1990, 5, 20);
Console.WriteLine(birthday);
C#

DateTime は「年・月・日」を指定して作成できます。 誕生日やイベント日など、固定の日付を扱う場面で必須です。

DateTime の加算処理

問題

現在の日付から 7 日後の日付を求めて表示してください。

解答と解説

DateTime now = DateTime.Now;
DateTime future = now.AddDays(7);

Console.WriteLine("7日後は " + future + " です");
C#

AddDays は「日付を加算する」メソッドです。 AddHours、AddMinutes なども同じ考え方で使えます。

TimeSpan の基本を確認する

問題

2024年1月1日と2024年1月10日の差を求め、 「日数差は ○○ 日です」と表示してください。

解答と解説

DateTime start = new DateTime(2024, 1, 1);
DateTime end = new DateTime(2024, 1, 10);

TimeSpan diff = end - start;

Console.WriteLine("日数差は " + diff.Days + " 日です");
C#

TimeSpan は「日時の差」を表す型です。 end – start の結果が TimeSpan になることが重要です。

TimeSpan の作成

問題

1時間30分の TimeSpan を作成し、 「合計分数は ○○ 分です」と表示してください。

解答と解説

TimeSpan span = new TimeSpan(1, 30, 0);
Console.WriteLine("合計分数は " + span.TotalMinutes + " 分です");
C#

TimeSpan は「時間の長さ」を表すため、 タイマーやカウントダウンでよく使われます。

応用問題:年齢計算(正確版)

問題

誕生日(例:1990-05-20)を入力し、 現在の日時から正しい年齢を計算して表示してください。

解答と解説

Console.Write("誕生日を入力してください(例:1990-05-20):");
string input = Console.ReadLine();

DateTime birthday = DateTime.Parse(input);
DateTime today = DateTime.Now;

int age = today.Year - birthday.Year;

if (today < birthday.AddYears(age))
{
    age--;
}

Console.WriteLine("年齢は " + age + " 歳です");
C#

年齢計算の重要ポイントは 「誕生日を迎えているかどうかの判定」です。

today < birthday.AddYears(age) この条件で誕生日を迎えていない場合を正しく補正します。

志向問題:カウントダウン

問題

未来の日付(例:2024-12-31)を入力し、 その日までの残り日数・時間・分を表示してください。

解答と解説

Console.Write("イベントの日付を入力してください(例:2024-12-31):");
string input = Console.ReadLine();

DateTime eventDay = DateTime.Parse(input);
DateTime now = DateTime.Now;

TimeSpan remaining = eventDay - now;

Console.WriteLine("残り日数: " + remaining.Days);
Console.WriteLine("残り時間: " + remaining.Hours);
Console.WriteLine("残り分: " + remaining.Minutes);
C#

TimeSpan は「差」を表すため、 カウントダウンのような「残り時間」を扱う場面で非常に強力です。

Day14 練習問題まとめ

Day14 の練習問題では、次のポイントを確認しました。

DateTime → 日付と時刻を扱う TimeSpan → 日時の差を扱う

これらを組み合わせることで、 年齢計算 カウントダウン 締め切り管理 ログのタイムスタンプ

など、実用的な日時処理が簡単に実現できます。

タイトルとURLをコピーしました