日付をまたぐ時間の計算をするには?


美穂  2004-07-26 22:11:36  No: 115052  IP: [192.*.*.*]

AからBまでの残り時間を計算したいのですが
Time関数を使ったのですが、日付がまたぐ場合  年月日まで表示されてしまい
23時間とかの残り時間になってしまいます。
単純に時間を計算するコードはないのでしょうか?

編集 削除
JAN  2004-07-26 22:57:13  No: 115053  IP: [192.*.*.*]

年月日まで含めたDate型の変数を使用して
DateDiff関数を用いるとか

編集 削除
美穂  2004-07-27 09:50:21  No: 115054  IP: [192.*.*.*]

ぜんぜんわからないので
ソースのヒントをください

編集 削除
特攻隊長まるるう  2004-07-27 10:28:47  No: 115055  IP: [192.*.*.*]

過去ログ検索『DateDiff』かヘルプでも使用例のサンプルはありますが。
…ご存知ないですか?

編集 削除
美穂  2004-07-27 10:58:21  No: 115056  IP: [192.*.*.*]

みましたがさっぱりでした。

やりたいことは、指定時刻までのカウントダウンなのですが、
TIMEを監視してカウントダウンをしたいのです。
例えば23:00〜23:30で30分のカウントダウンを開始して
カウント追加ボタン(30分)がありそれをカウントダウン5分前に押すと
残りが35分になり35分からカウントダウンを開始されるようなプログラムをつくりたいのです。A時間からB時間までのカウントダウンを作りたいのです。

編集 削除
マグ  2004-07-27 11:49:22  No: 115057  IP: [192.*.*.*]

>カウント追加ボタン(30分)がありそれをカウントダウン5分前に押すと

現在の時間を取得し、算出して、30分足すというのはどうでしょうか?

VB.NETなら
現在の時間はNowで取得できたと思います。

Dim b as string=Now

その後で、分のみを出す。

Minute(b)

もし、時間を全て分にしたいならば・・・

Hour(b)*60+Minute(b)+Second(b)/60

とすれば出来ると思います。

編集 削除
美穂  2004-07-27 13:00:41  No: 115058  IP: [192.*.*.*]

Dateadd関数を使って  秒数化して時間を抜き出すことは成功したのですが
その抜き出したものから  29:59  29:58とカウントダウンさせていくほうほうがわかりません。
できればTimeの時間を参照して  TIMEの時間が1秒増えると30:00が29:59と
減っていくものをつくりたいのです。

ちなみVB6です。
最終的に表示したい形式は  hh:mm:ssです。

編集 削除
特攻隊長まるるう  2004-07-27 13:09:56  No: 115059  IP: [192.*.*.*]

[VB6.0]
Private Sub Command1_Click()
    Dim wTimeCount As Date
    wTimeCount = TimeSerial(1, 59, 30)
    
    MsgBox wTimeCount
    MsgBox DateAdd("s", -1, wTimeCount)
End Sub

編集 削除
特攻隊長まるるう  2004-07-27 13:23:11  No: 115060  IP: [192.*.*.*]

各引数の値が -32,768 〜 32,767 の範囲なら以下も通ります。
超えるとエラーになります。詳しくはヘルプに書いてあります。
[VB6.0]
Private Sub Command1_Click()
    Dim wTimeCount As Date
    wTimeCount = TimeSerial(0, 0, 1800)
    
    MsgBox wTimeCount
    MsgBox DateAdd("s", -1, wTimeCount)
End Sub

編集 削除
美穂  2004-07-27 13:23:33  No: 115061  IP: [192.*.*.*]

もっとわかりやすくいえば  24時を過ぎて  午前1時になったときに
午前一時の認識を25時、26時  27時、28時として認識させたいのです。

2日間はまたぐことがないのでいいとおもうのですが。・・・

編集 削除
特攻隊長まるるう  2004-07-27 13:42:00  No: 115062  IP: [192.*.*.*]

>もっとわかりやすくいえば  24時を過ぎて  午前1時になったときに
>午前一時の認識を25時、26時  27時、28時として認識させたいのです。
認識させればいいんじゃないですか?(^^;)
2日でも3日でも…
[VB6.0]
Private Sub Command1_Click()
    Dim wTimeCount As Date
    wTimeCount = DateSerial(2004, 1, 1) + TimeSerial(28, 0, 1800)
    
    MsgBox wTimeCount
    MsgBox DateAdd("s", -1, wTimeCount)
End Sub

過去ログ検索『TimeSerial』で
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200403/04030041.txt
とか見れば
>Dim Ntime  as Date
>Ntime=Time + TimeSerial(1, 0, 0)
とかいうサンプルもあるし、ヘルプと合わせて調べれば
初心者でも自分ひとりでできるレベルだと思ったんですが…。

編集 削除
JAN  2004-07-27 14:11:01  No: 115063  IP: [192.*.*.*]

Dim dtTm1 As Date
Dim dtTm2 As Date

dtTm1 = Now
dtTm2 = DateAdd("n", 30, dtTm1)

Do While DateDiff("s", dtTm2, Now) < 0
 Debug.Print TimeSerial(0, 0, -DateDiff("s", dtTm2, Now))
 DoEvents
Loop

編集 削除
JAN  2004-07-27 14:12:01  No: 115064  IP: [192.*.*.*]

何日またいでも同じですね。

編集 削除
美穂  2004-07-27 15:29:32  No: 115065  IP: [192.*.*.*]

用はお店用カウントダウンタイマーがつくりたかったのですが、
A現在時刻
Bセット開始時間
Cセット終了時間
D残り時間

スタートボタンを押したときにBはスタートボタン押した時の時刻を表示
Cはセット終了時間  例えば30分後を表示
Dは00:30:00からカウントダウン開始

コマンドボタン2(延長ボタン)を押した際にBは現在のCを取得表時
Cは取得したCになってるBの30分後を表示
Dは仮に  00:04:48だった場合  00:34:48を表示

時間によって、監視、時間とともにカウントダウンが減るを作りたかったのです。
もう一息で完成できそうです。

編集 削除
美穂  2004-07-27 15:30:20  No: 115066  IP: [192.*.*.*]

C-Bを引いた時間  +Cの残りを足した状態でのカウントダウンがしたかったのでした。

編集 削除
JAN  2004-07-27 15:32:15  No: 115067  IP: [192.*.*.*]

ここまで例があるのですからあとはご自分で考えてくださいね。

編集 削除