2014-12-19 3 views
3

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

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

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 

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

+1

Вам нужно добавить день, потому что вы по существу выполняете целочисленное вычитание '30 - 1 = 29'. Время вашей даты начинается в полночь каждого дня, поэтому вы игнорируете 24 часа, которые являются частью последнего дня. –

ответ

2

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

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 

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

+0

или просто нарисуйте свой результат на Integer 'totalhours = CInt (TS.TotalHours)' –

Смежные вопросы