【发布时间】:2016-12-21 15:27:17
【问题描述】:
我有一个 TimeSpan 字段,可以将花费在某事上的时间加起来。比如时间可以是 33 小时,所以格式是33:56:00
我想将此与 10 小时进行比较,以计算完成了多少小时。
TimeSpan totalActualHours = new TimeSpan(0, 0, 0, 0, 0);
if (totalActualHours > TimeSpan.Parse(txtEstimateHrs.Text))
{
tmpOverHours = totalActualHours.Subtract(TimeSpan.Parse(txtEstimateHrs.Text));
}
但由于totalActualHours 已超过 24 小时,因此格式会像 1.09:56:00 而不是 33:56:00。所以txtEstimateHrs.Text 等于 10,我想看看33:56:00 是否更大,如果是,那么它会增加多少小时?
所以代码是比较 if (1.09:56:00 > 10.00:00:00) 所以它永远不会进入 if 语句。
这里的问题是将小时转换为天的时间跨度,因此 33 小时更改为 1 天和 9 小时,txtEstimateHrs.Text 是整数 10,更改为 10 天。我需要两次都采用小时格式并能够比较它们
【问题讨论】:
-
我不太确定这是否是重复的,但问题并不是很清楚。也许你可以尝试用另一个例子来解释它。您可以比较大于 24 小时的时间跨度。
-
@TimSchmelter 请看我的编辑
-
只做
tmpOverHours = (int)(totalActualHours.TotalHours - int.Parse(txtEstimateHrs.Text)) -
@Innat3 导致错误
Cannot implicitly convert type 'int' to 'System.TimeSpan' -
@user123456789 因为我知道您只想要超过几个小时,所以我将它们输出为整数值而不是时间跨度。你可以这样做:
tmpOverHours = totalActualHours.Subtract(new TimeSpan(0, int.Parse(txtEstimateHrs.Text), 0, 0, 0));