Как получить общее количество часов с использованием TimeSpan в VB.NET

Я использую функцию TimeSpan в VB.NET, чтобы получить общее количество часов в месяце выставления счета.

У меня 30 дней в расчетном месяце, поэтому предположительно у меня 720 интервалов. Обычно используя Timespan, я получаю 696 интервалов. Но я добавляю день в «сегодня», чтобы получить правильное общее количество часов. Это мой код:

Dim TS As TimeSpan   
Dim totalhours As Integer
Dim todate As DateTime = #11-30-2014#
Dim fromdate As DateTime = #11-01-2014#

TS = todate.AddDays(1).Subtract(fromdate)
totalhours = TS.TotalHours

Однако я не думаю, что манипулирование моей датой ввода (путем добавления дня) является лучшей практикой. Есть ли способ настроить функцию временного интервала, чтобы получить общее количество часов?


person lulutanseco    schedule 19.12.2014    source источник
comment
Вам нужно добавить день, потому что вы, по сути, выполняете целочисленное вычитание 30 - 1 = 29. Время вашего свидания начинается в полночь каждого дня, поэтому вы игнорируете 24 часа, которые являются частью последнего дня.   -  person Mark Hall    schedule 19.12.2014


Ответы (1)


Это потому, что вы не указали временной диапазон. Только дата будет 12:00 для временной части.

Dim TS As TimeSpan   
Dim totalhours As Integer
Dim todate As DateTime = #11-30-2014 11:59:59 PM#
Dim fromdate As DateTime = #11-01-2014#

TS = todate.Subtract(fromdate)
totalhours = TS.TotalHours

Это будет 1 час застенчивый.

Dim TS As TimeSpan   
Dim totalhours As Integer
Dim todate As DateTime = #12-01-2014#
Dim fromdate As DateTime = #11-01-2014#

TS = todate.Subtract(fromdate)
totalhours = TS.TotalHours

Будет получена правильная сумма, так как она включает время между двумя датами.

person OneFineDay    schedule 19.12.2014
comment
или просто приведите результат к целому числу totalhours = CInt(TS.TotalHours) - person Mark Hall; 19.12.2014