2017-02-23 148 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