如何从两个 DateTimePickers 获取时间长度并与整数进行比较?

How to get the length of time from two DateTimePickers and compare to an integer?

发布后立即找到我需要的东西(当然)。感谢您的帮助。我不了解 TimeSpan,也没有意识到我可以简单地将 .TotalHours 添加到我的 TimeSpan 变量的末尾以获得我需要的东西。


请像我5岁一样解释一下

我有两个自定义格式为 HH:mm 的 DateTimePicker 对象,因此只输入军事时间。日期无关紧要。一个选择器用于开始时间,另一个选择器用于结束时间。

我需要能够从结束时间中减去开始时间,以便获得它们之间的总时间长度(以小时为单位)。

然后我需要将这个时间长度转换为整数吗?以便我稍后可以使用 if 语句查看它是否等于或大于某个数字。

我知道 DateTime 可以使用 > < 和其他运算符,所以这就是我想使用的。

然而,当我尝试像这样创建一个变量时:

var timeLength = endTime.Value - startTime.Value;

它告诉我它是一个 TimeSpan 变量。

我尝试创建一个 DateTime 变量,以便以后可以使用 > < 和其他运算符:

DateTime timeLength = endTime.Value - startTime.Value;

我得到了红色波浪形

"Cannot implicitly convert type 'System.TimeSpan' to 'System.DateTime'

好吧 VS,我不需要 TimeSpan 变量。至少我不认为我这样做?

无论如何,显然这意味着我以后不能使用 shiftLength 变量来与事物进行比较,所以这是行不通的。

我试图在我的 if 语句中直接这样做:

if (endTime.Value - startTime.Value <= 12)

Operator '<=' cannot be applied to operands of type 'TimeSpan' and 'int'

好的。美好的。所以.

1) 为什么将其称为 TimeSpan 变量。我正在尝试查看 TimeSpan 属性,这让我很困惑。我是否需要使用 TimeSpan 来完成我想要做的事情?如果不是..

2) 从我的 startTime.Value 中减去我的 DateTimePicker endTime.Value 以便能够将其与具有 < > = 运算符的整数进行比较的最简单方法是什么?

使用 TotalMinutes (TotalHours, TotalSeconds 等) 属性 的 TimeSpan:

if ((endTime.Value - startTime.Value).TotalHours <= 12)
{
    ....
}

参考:TimeSpan