Sを"hh:nn:ss"に変換するには?


ZERO  2007-08-20 23:24:36  No: 137202

OS:XP Pro SP2
VB6.0
SQLServer2005

はじめまして。
VB6で3000秒を00:50:00と表示するにはどのようにすればよろしいでしょうか?

Mod関数を使っていろいろ試したんですけど、うまくいきませんでした。

hh = a / 3600
nn = a Mod 3600
ss = (a Mod 3600) mod 60

見当違いですか?
よろしくお願いします。


あん  2007-08-20 23:39:05  No: 137203

はい  見当違いです。
時、分、秒の関係を見直しましょう。


大吉末吉  2007-08-20 23:54:37  No: 137204

> hh = a / 3600
> nn = a Mod 3600
> ss = (a Mod 3600) mod 60

の方法でやるなら、「\ 演算子」を使って・・・

後、せっかく、VB6なので(24時間未満限定ですが)、
> Format(DateAdd("s", 3000, CDate("00:00:00")), "hh:nn:ss")
とかでも・・・


ZERO  2007-08-21 00:02:44  No: 137205

ご回答ありがとうございます。

a  = 3000
hh = a \ 3600
nn = a \ 60
ss = a Mod 60

と表記し、0:50:0となりました。

こちらを00:50:00に変換する方法はありますか?
hh = Format(a \ 3600, "@0")とすると全てに0が足されてしまいました(汗)

>大吉末吉様
求めたいのが、勉強時間の合計でして、
イメージ的に
SUM(DateDiff("s", STARTTIME, ENDTIME)) AS 合計勉強時間
みたいな形にしたいため、24時間以上もありえるかと思います。

STARTTIME、ENDTIME、ともにdatetime型です。


大吉末吉  2007-08-21 00:33:55  No: 137206

> 24時間以上もありえるかと思います。
なら、

> a  = 3000
> hh = a \ 3600
> nn = a \ 60
> ss = a Mod 60
は、間違ってますよ。

#1時間以上(1時間0分1秒=3601)のときどうなります?

> hh = Format(a \ 3600, "@0")とすると全てに0が足されてしまいました(汗)
"@"は「文字列用」、"0"は「数値用」の指定です。共存はできません。

#"@"の方が有効になって"0"は「単なる文字列」と看做され、「文字列の後に"0"をつける」と言う意味になります。

> hh = Format(a \ 3600, "00")
では?


ZERO  2007-08-21 01:39:50  No: 137207

hh = Format(a \ 3600, "00")
nn = Format((a - (hh * 3600)) \ 60, "00")
ss = Format((a - (hh * 3600)) Mod 60, "00")

MsgBox hh & ":" & nn & ":" & ss

一応、上記でうまくいきました。
まだテストが不十分ですが(汗)

大吉末吉様ありがとうございます。


774  2007-08-21 03:02:43  No: 137208

>hh = Format(a \ 3600, "00")
>nn = Format((a - (hh * 3600)) \ 60, "00")
>ss = Format((a - (hh * 3600)) Mod 60, "00")

>一応、上記でうまくいきました

ほんと?


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

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






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