2017-02-23 7 views
0

Ich möchte DateAdd() verwenden, um eine neue Zeit zu berechnen, aber die Ergebnisse sind für mich verwirrend.DateAdd() Funktion funktioniert nicht richtig

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

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

Das Ergebnis DatumEnd ist 31.12.1899 und nicht 24:00:00

Ich denke, es gibt ein Problem mit der Berechnung. Wenn ich 09:00:00 anstelle von 20:00:00 versuche, ist das Ergebnis korrekt (13:00:00).

+5

'24: 00: 00 'ist die' nächsten Tag 00: 00: 00'. – GSerg

+3

Es gibt keine 24:00:00 in .net –

+0

sogar 00:00:00 wäre schön, aber wie Sie sehen können, ist das Ergebnis 31.12.1899. – rel0aded0ne

Antwort

1

Das Ergebnis DatumEnd ist 31.12.1899 und nicht 24:00:00

Das Ergebnis ist korrekt, da es keine Zeit von 24:00:00 ist. 24 Stunden ist 1 Tag, also ist Ihr Wert 1899-12-30 plus (20 + 4) Stunden => 1899-12-31.

Wenn Sie erweiterte Anzahl der Stunden angezeigt werden sollen, verwenden Sie eine Funktion wie folgt aus:

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 
Verwandte Themen