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

reg*_*gie 180 c# datetime timespan asp.net-mvc-2

我正从数据库中检索两个日期时间值.一旦检索到值,我需要两个值之间的差异.为此,我创建了一个时间跨度变量来存储2个日期值的差异.

TimeSpan? variable = datevalue1 - datevalue2;
Run Code Online (Sandbox Code Playgroud)

现在我需要以小时数的形式显示存储在Timespan变量中的差异.我提到了TimeSpan.TotalHours但由于某种原因无法应用它.我怎么做?我在MVC项目上使用C#.我只需要以小时显示差异值?

编辑:由于时间跨度可以为空,我无法使用总小时数属性.现在我可以通过做TimeSpanVal.Value.TotalHours来使用它 ;

Mar*_*way 184

你可能也想看看

var hours = (datevalue1 - datevalue2).TotalHours;
Run Code Online (Sandbox Code Playgroud)

  • Nullable需要一个.Value.TotalHours而不仅仅是.TotalHours.这是可空包装的一个因素.你也可以把它作为一个时间跨度 - >((TimeSpan)(nullabledatevalue1 - nullabledatevalue2)).TotalHours (7认同)

Han*_*son 114

我觉得你很困惑,因为你没有声明TimeSpan你已经声明了TimeSpan?哪个是可以为空的 TimeSpan.如果您不需要可以为空或使用问号,请删除问号variable.Value.TotalHours.


saf*_*afi 82

在示例中,我们创建了两个日期时间对象,一个具有当前时间,另一个具有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 );
Run Code Online (Sandbox Code Playgroud)

结果:

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

  • 你想使用"Total",如"TotalSeconds","TotalMinutes"等 (28认同)

Ily*_*gan 38

你有没有理由使用Nullable

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

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

  • @Illya,我的意思是它们可能是“Nullable<DateTime>”,因此您会得到一个“Nullable<TimeSpan>”。 (2认同)

Mar*_*que 7

这是在C#中减去两个日期的另一个例子......

if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) 
{ 
... 
} 
Run Code Online (Sandbox Code Playgroud)