トップ回答者
タイマーを作りたい

質問
-
5分間タイマーを作る目的です。
スタート時の現在時刻を Now で取得して、変数Aに格納しておいて、
timerを使って取得した時々刻々の時刻を変数Bに格納、差を変数Cに格納、
フォーム上のLabelかTextBoxにCを表示しようと思ったのですが。代入する変数の型が分かりません。
当初時刻と現在時刻の差を求める良い方法を教えて頂けたら有り難いです。
ネット検索したら、固定した暦日を基準にする説明がありましたが、
私の場合はプログラムを起動した時刻がスタート時刻になりますので、参考になりませんでした。いつまでたっても初心者状態ですので宜しくお願いします。
回答
-
StopWatchクラスを使用されてみてはいかがでしょうか?
時間の差を代入する変数としては、TimeSpan型が適切でしょう。[VB] Stopwatch クラスで処理時間を計測する方法
https://code.msdn.microsoft.com/windowsdesktop/VB-Stopwatch-9678d2bcその他にもいろいろサンプルが見つかると思いますので探してみて下さい。
★良い回答には質問者は回答済みマークを、閲覧者は投票を!
- 回答の候補に設定 Luky9 2019年7月4日 8:53
- 回答としてマーク Easy Unemployed 2019年7月4日 11:48
-
Private StartTime As Date Private EndTime As Date Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click StartTime = Now EndTime = StartTime.AddMinutes(5.0) Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim currentTime As Date = Now Dim passedTime As TimeSpan = currentTime - StartTime Dim remaingTime As TimeSpan = EndTime - currentTime Label1.Text = "現在日時:" & currentTime.ToLongDateString() & " " & currentTime.ToLongTimeString() If currentTime < EndTime Then Label2.Text = String.Format("経過: {0:N0}分{1,2}.{2:0000}秒", Fix(passedTime.TotalMinutes), passedTime.Seconds, passedTime.Milliseconds) Label3.Text = String.Format("残り: {0}", remaingTime) Else Label2.Text = "終了" Label3.Text = "" Timer1.Stop() End If End Sub
- 編集済み 魔界の仮面弁士MVP 2019年7月4日 8:34
- 回答の候補に設定 Luky9 2019年7月4日 8:53
- 回答としてマーク Easy Unemployed 2019年7月4日 11:48
すべての返信
-
StopWatchクラスを使用されてみてはいかがでしょうか?
時間の差を代入する変数としては、TimeSpan型が適切でしょう。[VB] Stopwatch クラスで処理時間を計測する方法
https://code.msdn.microsoft.com/windowsdesktop/VB-Stopwatch-9678d2bcその他にもいろいろサンプルが見つかると思いますので探してみて下さい。
★良い回答には質問者は回答済みマークを、閲覧者は投票を!
- 回答の候補に設定 Luky9 2019年7月4日 8:53
- 回答としてマーク Easy Unemployed 2019年7月4日 11:48
-
Private StartTime As Date Private EndTime As Date Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click StartTime = Now EndTime = StartTime.AddMinutes(5.0) Timer1.Start() End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim currentTime As Date = Now Dim passedTime As TimeSpan = currentTime - StartTime Dim remaingTime As TimeSpan = EndTime - currentTime Label1.Text = "現在日時:" & currentTime.ToLongDateString() & " " & currentTime.ToLongTimeString() If currentTime < EndTime Then Label2.Text = String.Format("経過: {0:N0}分{1,2}.{2:0000}秒", Fix(passedTime.TotalMinutes), passedTime.Seconds, passedTime.Milliseconds) Label3.Text = String.Format("残り: {0}", remaingTime) Else Label2.Text = "終了" Label3.Text = "" Timer1.Stop() End If End Sub
- 編集済み 魔界の仮面弁士MVP 2019年7月4日 8:34
- 回答の候補に設定 Luky9 2019年7月4日 8:53
- 回答としてマーク Easy Unemployed 2019年7月4日 11:48