- ベストアンサー
残り時間の計算方法について教えてください
- VB2008でユーザーフォーム上に配置された時刻Labelとtextbox1を使用して、textbox2に締切時刻までの残り時間(分と秒)をリアルタイムに表示する方法を教えてください。
- Timer1_Tickイベントを使用して、現在時刻を取得し時刻Labelに表示します。textbox1に表示されている締切時刻と現在時刻を比較して、残り時間を計算しtextbox2に表示します。
- コードにはエラーがあります。時刻Labelとtextbox1の値をDateTime型に変換する必要があります。また、残り時間の計算にはTimeSpan型を使用する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
コードを拝見した限り次の点がよろしくないかと。 ・文字列をDate型へ直接代入している点 StrictがOnであればここでビルドエラーが発生します。 ・TimeStringが何を示しているのか不明 おそらく現在時刻だと思いますが・・・。 ・変数名が何を示しているのか分かりにくい 数字ではなくちゃんと名前をつけてあげましょう。 ・残り時間の計算式が疑問 Date型に対してTimeValueを使う必要性がわかりません。 ・締め切り時刻を示すdtmDate2がどこにも使われていない TimeString → 時刻Label.Text → dmtDate1 ですから、TimrString - TimeString をしていることになります。 「時刻」と「時間」は違います。2つの「時刻」の間隔を表すものが「時間」です。 この2つを表現するために.NETでは、「時刻」を表すDate型(DateTime型)、「時間」を表すTimeSpan構造体が用意されていますので、目的に合わせて使い分けましょう。 基本は「残り時間 = 締め切り時刻 - 現在時刻」という式ですが、実際には2つの時刻間隔(TimeSpan)を得るために、Subtractメソッドを使います。 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim dtClosing As Date ' 締め切り時刻 Dim spanRest As TimeSpan ' 締め切りまでの残り時間 dtClosing = Date.Parse(TextBox1.Text) ' TextBox1の内容を時刻型へ変換 spanRest = dtClosing.Subtract(Date.Now) ' 締め切りまでの残り時間を計算 TextBox2.Text = spanRest.TotalMinutes.ToString("0") ' 残り時間を「分」で表示 Label1.Text = Date.Now.ToString("HH:mm:ss") ' 現在時刻を表示 End Sub
その他の回答 (2)
- hornet3
- ベストアンサー率19% (12/62)
失礼。ちょっぴり訂正。 '文字列からDateTime型に変更するときの例 Dim dtmLimit As DateTime = System.DateTime.Parse("18:00:00") '現在時間との差を求める例 Dim tspTime As TimeSpan = dtmLimit.Subtract(Now)
- hornet3
- ベストアンサー率19% (12/62)
以下は参考になるでしょうか。 '文字列からDateTime型に変更するときの例 Dim dtmLimit As DateTime = System.DateTime.Parse("18:00:00") '現在時間との差を求める例 Dim tspTime As TimeSpan = dtmTime.Subtract(Now)