テキストボックス txtText1に「4830」と入力し、ボタン btnHenkanを押すと、lblText1に「1時間20分30秒」と表示させたいです。
やり方が分からず困っています。
使用している環境は、VB.Netは2005です。
ご教授願えますようお願いいたします。
lblText1.Text = TimeSerial(0, 0, CInt(txtText1.Text)).ToString("h時間m分s秒")
でどうでしょうか?
解のひとつとしては、TimeSpan 構造体を使うという手法があります。
Dim ts As New TimeSpan(0, 0, 4830)
Dim result As String = String.Format("「{0}秒」=「{1}時間{2}分{3}秒」", ts.TotalSeconds, ts.Hours, ts.Minutes, ts.Seconds)
'MsgBox(ts.ToString())
あるいは、単純に割り算で求めていく事もできます。
まず、[4830秒]を 60秒単位 で割ると、[80分]と余りが[30秒]です。
その[80分]を 60分単位 で割ると、[1時間]と余りが[20分]となります。
ゆえに『1時間20分30秒』と算出できますね。
通常の割り算では、「/ 演算子」を使って求めますが、
商と余りを得る場合には、商を「\ 演算子」、余りを「Mod 演算子」で求めます。
たとえば、「4830秒」を 60秒(1分)単位で割って、「80分と30秒」に
分離する場合は、下記のようにします。
Dim totalSeconds As Integer = 4830 '「4830」秒
Dim a As Integer = totalSeconds \ 60 '「80」分
Dim b As Integer = totalSeconds Mod 60 '「30」秒
'Dim c As Double = totalSeconds / 60 '「80.5」分
> Dim result As String = String.Format("「{0}秒」=「{1}時間{2}分{3}秒」", ts.TotalSeconds, ts.Hours, ts.Minutes, ts.Seconds)
Dim result As String = String.Format("「{0}秒」=「{1}時間{2}分{3}秒」", ts.TotalSeconds, Fix(ts.TotalHours), ts.Minutes, ts.Seconds)
に差し替えておいてください。
> lblText1に「1時間20分30秒」と表示させたいです。
その他、下記のパターンについても考えておいた方が良いと思います。
(1) txtText1 に、数値以外の値が入力された場合の対応はできているか。
(2) txtText1 に、マイナス値を入力された場合にはどうするか。
(3) txtText1 に、小数値を入力された場合に、秒未満の時間も表示するか否か。
(4) 91230秒の場合、「1日1時間20分30秒」なのか「25時間20分30秒」なのか。
(5) 3600秒の場合、「1時間」なのか「1時間0分0秒」なのか「1時間00分00秒」なのか。
(6) 60秒の場合、「1分」なのか「0時間1分0秒」なのか「1分00秒」なのか「1分0秒」なのか。
出来ました!
皆さん、アドバイスを頂きありがとうございました。
出来ました!
皆さん、アドバイスを頂きありがとうございました。
出来ました!
皆さん、アドバイスを頂きありがとうございました。
ツイート | ![]() |