[リストへもどる]
一括表示

投稿時間:2004/06/21(Mon) 16:54
投稿者名:まみ
Eメール:
URL :
タイトル:
時間の計算ついて
こんにちは。よろしくお願いします。
開始時間のと終了時間があり。
終了時間 − 開始時間(19:15 − 19:00 = 00:15)と計算されますが。
終了時間 − 開始時間(00:15 − 23:00 = ?)計算がおかしくなります。
すべての変数はDATE型で宣言されています。
どのようにコードを書けば宜しいですか?よろしくお願いします。


          

投稿時間:2004/06/21(Mon) 17:04
投稿者名:算数
Eメール:
URL :
タイトル:
Re: 時間の計算ついて
> 終了時間 − 開始時間(00:15 − 23:00 = ?)計算がおかしくなります。

小学校の算数の問題でしょう。
プログラムとして考える前に紙に書いて手計算をしてみたら。

投稿時間:2004/06/21(Mon) 17:27
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: 時間の計算ついて
> 終了時間 − 開始時間(19:15 − 19:00 = 00:15)と計算されますが。
> 終了時間 − 開始時間(00:15 − 23:00 = ?)計算がおかしくなります。

そもそもおかしくなるってどんな値が返って来るのさ?

投稿時間:2004/06/21(Mon) 17:59
投稿者名:まみ
Eメール:
URL :
タイトル:
Re^2: 時間の計算ついて

> そもそもおかしくなるってどんな値が返って来るのさ?

終了時間 − 開始時間(00:15 − 23:15 = 23:00)となります。

投稿時間:2004/06/21(Mon) 18:33
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^3: 時間の計算ついて
どうもDateDiffの絶対値が返るみたいですね、理由はわかりませんが。

ようは0時またぎをちゃんと計算したいってことですよね?
日付も入れて計算すれば大丈夫だと思います。

そうじゃなければDateDiffでマイナスの値になった時は24時間分足してやるとか。
まァこの場合2日またぎがムリなんでやっぱり日付も入れて計算した方が良いですけど。

投稿時間:2004/06/21(Mon) 19:05
投稿者名:いちゆ
Eメール:
URL :
タイトル:
Re^4: 時間の計算ついて
まぁ、Date型は時間であって、時間の差じゃないからな。
仕方ない。

投稿時間:2004/06/21(Mon) 22:13
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^2: 時間の計算ついて
VBの日付型は西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の
範囲の日付と、0:00:00 〜 23:59:59 の範囲の時刻を表します。
従って、日付型に変換すると, -23:00 という時刻はありえないので、23:00 に
なってしまうと思います。
下記を試して見て下さい。日付型に変換しなければ、マイナスの値が返ってきます。
DateDiff() 関数で時間差を求めた場合もマイナス値で返ってきます。

Private Sub Command1_Click()
    Debug.Print (CDate("00:15") - CDate("23:00"))
    Debug.Print Format((CDate("00:15") - CDate("23:00")), "hh:mm")
    Debug.Print ((CDate("00:15") - CDate("23:00")) * 1440) \ 60
    Debug.Print ((CDate("00:15") - CDate("23:00")) * 1440) Mod 60
    
    Debug.Print DateDiff("h", CDate("23:00"), CDate("00:15"))
    Debug.Print DateDiff("n", CDate("23:00"), CDate("00:15")) Mod 60
End Sub

投稿時間:2004/06/22(Tue) 10:09
投稿者名:まみ
Eメール:
URL :
タイトル:
Re: 時間の計算ついて
こんにちは。
日付と時間を含めて経過時間をもとめした。
皆様いろいろありがとうございました。