秒の変換

解決


ひなこ  2010-05-10 22:41:31  No: 146848

テキストボックス txtText1に「4830」と入力し、ボタン btnHenkanを押すと、lblText1に「1時間20分30秒」と表示させたいです。
やり方が分からず困っています。
使用している環境は、VB.Netは2005です。
ご教授願えますようお願いいたします。


matsu  2010-05-11 00:17:40  No: 146849

lblText1.Text = TimeSerial(0, 0, CInt(txtText1.Text)).ToString("h時間m分s秒")

でどうでしょうか?


魔界の仮面弁士  2010-05-11 00:19:13  No: 146850

解のひとつとしては、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」分


魔界の仮面弁士  2010-05-11 00:31:25  No: 146851

> 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秒」なのか。


ひなこ  2010-05-13 00:32:30  No: 146852

出来ました!

皆さん、アドバイスを頂きありがとうございました。


ひなこ  2010-05-13 00:33:01  No: 146853

出来ました!

皆さん、アドバイスを頂きありがとうございました。


ひなこ  2010-05-13 00:35:00  No: 146854

出来ました!

皆さん、アドバイスを頂きありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加