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

投稿時間:2004/01/27(Tue) 15:49
投稿者名:少林子
Eメール:
URL :
タイトル:
日時の計算について
お世話になります。
DateAddやDateDiffで日付の計算は出来ますが、
日時での計算がうまく出来ません。
たとえば、2004/01/05 10:00:00 から 2004/01/13 16:30:10 までは
何日何時何分何秒なのか知りたいのです。

すみませんが、宜しくお願いします。

投稿時間:2004/01/27(Tue) 16:05
投稿者名:いちゆ
Eメール:
URL :
タイトル:
Re: 日時の計算について
ためしに、こんなプログラム動かしてください。

Dim d1 As Date
Dim d2 As Date
Dim d3 As Date

d1 = DateSerial(2004, 1, 5) + TimeSerial(10, 0, 0)
d2 = DateSerial(2004, 1, 13) + TimeSerial(16, 30, 10)
d3 = CDate(d2 - d1)
MsgBox d3

投稿時間:2004/01/27(Tue) 16:38
投稿者名:ak
Eメール:
URL :
タイトル:
Re: 日時の計算について
サンプル記述しておきます。

Public Sub Test()
    Dim lVal()    As Long
    
    Call DateDiffEx("2004/01/13 16:30:10", "2004/01/05 10:00:00", lVal)
    
    '配列番号 0:符号 1:日数 2:時間 3:分 4:秒
    MsgBox StrConv(lVal(1) & "日と" & lVal(2) & "時間" & lVal(3) & "分" & _
                   lVal(4) & "秒" & IIf(lVal(0) = 0, "", " 前"), vbWide)
    Erase lVal
End Sub

Public Sub DateDiffEx(ByVal Date1 As Date, ByVal Date2 As Date, ByRef lVal() As Long)
    Dim lTmp    As Long
    
    ReDim lVal(4)
    
    lTmp = DateDiff("S", Date1, Date2)  '秒数を取得
    
    If lTmp < 0 Then
        lVal(0) = -1
        lTmp = -lTmp
    End If
    
    lVal(1) = lTmp \ 86400              '日数取得
    lTmp = lTmp - (86400 * lVal(1))
    lVal(2) = lTmp \ 3600               '時間取得
    lTmp = lTmp - (3600 * lVal(2))
    lVal(3) = lTmp \ 60                 '分取得
    lVal(4) = lTmp - (60 * lVal(3))     '秒取得
    
End Sub

投稿時間:2004/01/27(Tue) 17:27
投稿者名:少林子
Eメール:
URL :
タイトル:
ありがとうございます
いちゆさん、akさん、早速の返答ありがとうございます。
おかげで、意思通りに表示することが出来ました。
本当に感謝いたします。