C#で作成した時計プログラムを、現在時刻ではなくユーザーが指定した時刻から動かすように変更する方法を解説します。これにより、例えば14:30など任意の時刻を入力して時計をスタートできます。
ユーザー入力の取得
まず、コンソールまたはGUIから時刻を文字列として取得します。例としてコンソール入力では以下のように取得できます。
Console.WriteLine("開始時刻をHH:mm形式で入力してください:");string input = Console.ReadLine();
取得した文字列をTimeSpanまたはDateTimeに変換し、時計の初期値として使用します。
DateTime変数を初期化
現在時刻を取得する箇所を、ユーザー入力で生成したDateTimeに置き換えます。
DateTime startTime = DateTime.ParseExact(input, "HH:mm", null);
これで時計はstartTimeから動作を開始します。
タイマーでの時刻更新
元のプログラムで使用しているTimerやUpdate関数では、DateTime.NowではなくstartTimeを基準に更新します。
例えば1秒ごとにstartTimeを1秒進め、表示に反映することで、任意時刻からの時計動作が可能です。
GUIでの表示更新
WindowsフォームやWPFで表示している場合、LabelやTextBlockに毎秒startTimeを表示します。
label1.Text = startTime.ToString("HH:mm:ss");
タイマーイベントでstartTimeを1秒ずつ加算します。
まとめ
C#の時計プログラムを任意の時刻スタートに改造するには、ユーザーから時刻入力を受け取り、DateTime変数で初期化し、タイマーでそのDateTimeを更新して表示する仕組みに変更します。これにより、自由に開始時刻を指定して時計を動かせるようになります。


コメント