【问题标题】:How to get inclusive total hours using TimeSpan in VB.NET如何在 VB.NET 中使用 TimeSpan 获得包容性总小时数
【发布时间】:2025-12-06 13:50:03
【问题描述】:

我在 VB.NET 中使用 TimeSpan 函数来获取一个计费月份的总小时数。

我在一个计费月有 30 天,所以我应该有 720 个间隔。正常使用时间跨度,我会得到 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

但是,我不认为操纵我的输入日期(通过添加一天)是最佳做法。有没有办法配置timespan函数来获取包含的总小时数?

【问题讨论】:

  • 您需要添加日期,因为您实际上是在执行整数减法30 - 1 = 29。您的日期时间从每天的午夜开始,因此您忽略了最后一天的 24 小时。

标签: vb.net timespan


【解决方案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

将获得正确的金额,因为它包括两个日期之间的时间。

【讨论】:

  • 或者只是将结果转换为整数totalhours = CInt(TS.TotalHours)