2017-02-23 69 views
0

我想使用DateAdd()來計算新的時間,但結果令我感到困惑。DateAdd()函數無法正常工作

Dim lstZeit As Date 'lstZeit is 20:00:00 (8pm) 
Dim DatumEnd As Date 

DatumEnd = DateAdd("h", 4, lstZeit) 

DatumEnd結果是1899年12月31日,而不是24:00:00

我認爲這是與計算問題。如果我嘗試09:00:00而不是20:00:00,結果是正確的(13:00:00)。

+5

'24:00:00'是第二天的'00:00:00'。 – GSerg

+3

沒有24:00:00 .net –

+0

甚至00:00:00會很好,但你可以看到結果是31.12.1899。 – rel0aded0ne

回答

1

DatumEnd的結果是1899年12月31日,而不是24:00:00

這結果是正確的,因爲沒有的24:00:00的時間。 24小時是1天,所以你的價值是1899-12-30加(20 + 4)小時=> 1899-12-31。

如果你想顯示的時間擴展計數,使用這樣的功能:

Public Function FormatHourMinute(_ 
    ByVal datTime As Date, _ 
    Optional ByVal strSeparator As String = ":") _ 
    As String 

' Returns count of days, hours and minutes of datTime 
' converted to hours and minutes as a formatted string 
' with an optional choice of time separator. 
' 
' Example: 
' datTime: #10:03# + #20:01# 
' returns: 30:04 
' 
' 2005-02-05. Cactus Data ApS, CPH. 

    Dim strHour  As String 
    Dim strMinute  As String 
    Dim strHourMinute As String 

    strHour = CStr(Fix(datTime) * 24 + Hour(datTime)) 
    ' Add leading zero to minute count when needed. 
    strMinute = Right("0" & CStr(Minute(datTime)), 2) 
    strHourMinute = strHour & strSeparator & strMinute 

    FormatHourMinute = strHourMinute 

End Function