Как да получите общи общи часове с помощта на 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

Въпреки това не мисля, че манипулирането на моята дата на въвеждане (чрез добавяне на ден) е най-добрата практика. Има ли някакъв начин да конфигурирате функцията за времеви интервал, за да получите включващите общи часове?


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


Отговори (1)


Това е така, защото не сте предоставили времевия диапазон. Само датата ще бъде 12 сутринта за часовата част.

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