2017-02-23 101 views
0

Я хочу использовать DateAdd() для вычисления нового времени, но результаты меня смущают.Функция DateAdd() не работает должным образом

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

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

Результат DatumEnd является 31.12.1899 и не 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 является 31.12.1899 и не 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 
Смежные вопросы