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

TimeSpan? variable = datevalue1 - datevalue2;

现在我需要显示在Timespan变量中存储的小时数的差异。 我提到了TimeSpan。TotalHours,但由于某种原因不能应用相同的。 我怎么做呢? 我在MVC项目上使用c#。我需要简单地显示小时的差异值?

编辑: 由于时间跨度是空的,我不能使用总小时属性。现在我可以通过timeespanval。value。totalhours来使用它;


当前回答

在本例中,我们创建了两个datetime对象,一个具有当前时间,另一个具有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 );

结果:

Time Difference (seconds): 15
Time Difference (minutes): 1
Time Difference (hours): 0
Time Difference (days): 0

其他回答

在本例中,我们创建了两个datetime对象,一个具有当前时间,另一个具有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 );

结果:

Time Difference (seconds): 15
Time Difference (minutes): 1
Time Difference (hours): 0
Time Difference (days): 0

我想你很困惑,因为你没有声明TimeSpan你声明了TimeSpan?这是一个可空的TimeSpan。如果您不需要它为空,可以删除问号,或者使用variable.Value.TotalHours。

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

if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) 
{ 
... 
} 

一个更精确的方式为员工支付工时或其他精度要求::

decimal DeterminePreciseHours(DateTime startTimestamp, DateTime stopTimestamp)
{
    var span = (stopTimestamp - startTimestamp).Value;
    decimal total = (decimal)span.TotalMilliseconds / 60 / 60 / 1000;
    return Math.Round(total, PRECISION_CONSTANT);
}

https://dotnetfiddle.net/tVIoVJ

你可能还想看看

var hours = (datevalue1 - datevalue2).TotalHours;