2017-02-23 1 views
0

Je souhaite utiliser DateAdd() pour calculer une nouvelle heure, mais les résultats sont confus pour moi.La fonction DateAdd() ne fonctionne pas correctement

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

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

Le résultat de DatumEnd est 31.12.1899 et non 24:00:00

Je pense qu'il ya un problème avec le calcul. Si j'essaye 09:00:00 au lieu de 20:00:00 le résultat est correct (13:00:00).

+5

'24: 00: 00 'est le lendemain de' 00: 00: 00'. – GSerg

+3

Il n'y a pas de 24:00:00 dans .net –

+0

même 00:00:00 serait bien, mais comme vous pouvez le voir, le résultat est 31.12.1899. – rel0aded0ne

Répondre

1

Le résultat de DatumEnd est 31.12.1899 et non 24:00:00

Ce résultat est correct car il n'y a pas de temps de 24:00:00. 24 heures est 1 jour, donc votre valeur est 1899-12-30 plus (20 + 4) heures => 1899-12-31.

Si vous souhaitez afficher étendu le nombre d'heures, utilisez une fonction comme ceci:

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