以小时显示两个date时间值之间的差异

我正在从数据库中检索两个date时间值。 一旦检索到值,我需要两个值之间的差异。 为此,我创build了一个时间跨度variables来存储两个date值的差异。

TimeSpan? variable = datevalue1 - datevalue2; 

现在我需要根据小时数来显示存储在Timespanvariables中的差异。 我提到TimeSpan.TotalHours但由于某种原因不能应用。 我怎么做? 我在一个MVC项目上使用C#。 我简单的需要在几小时内显示差异值?

编辑:由于时间跨度可以为空,我不能使用总小时数属性。 现在我可以使用它做TimeSpanVal.Value.TotalHours ;

我觉得你很困惑,因为你还没有宣布你宣布TimeSpan? 这是一个可空的 TimeSpan 。 要么删除问号,如果你不需要它可以为空或使用variable.Value.TotalHours

你也可以看看

 var hours = (datevalue1 - datevalue2).TotalHours; 

在示例中,我们创build了两个date时间对象,一个是当前时间,另一个是当前时间添加了75秒。 然后我们将在第二个DateTime对象上调用方法.Subtract()。 这将返回一个TimeSpan对象。 一旦我们获得了TimeSpan对象,我们可以使用TimeSpan的属性来获取实际的小时数,分钟数和秒数。

 DateTime startTime = DateTime.Now; DateTime endTime = DateTime.Now.AddSeconds( 75 ); TimeSpan span = endTime.Subtract ( startTime ); Console.WriteLine( "Time Difference (seconds): " + span.Seconds ); Console.WriteLine( "Time Difference (minutes): " + span.Minutes ); Console.WriteLine( "Time Difference (hours): " + span.Hours ); Console.WriteLine( "Time Difference (days): " + span.Days ); 

结果:

时差(秒):15时差(分钟):1时差(小时):0时差(天):0

你有使用Nullable的原因吗?

如果你想使用Nullable那么你可以写variable.Value.TotalHours

或者你可以写: (datevalue1 - datevalue2).TotalHours

这里是另一个在C#中减去两个date的例子

 if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) { ... } 
 var startTime = new TimeSpan(6, 0, 0); // 6:00 AM var endTime = new TimeSpan(5, 30, 0); // 5:30 AM var hours24 = new TimeSpan(24, 0, 0); var difference = endTime.Subtract(startTime); // (-00:30:00) difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00) 

如果我们比较两个不同的date,也可以添加date之间的差异

 new TimeSpan(24 * days, 0, 0)