首页 文章

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

提问于
浏览
157

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

TimeSpan? variable = datevalue1 - datevalue2;

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

EDIT: Since timespan was nullable, i couldn't use the total hours property. Now I can use it by doing TimeSpanVal.Value.TotalHours ;

7 回答

  • 65

    我认为你're confused because you haven'宣布 TimeSpan 你宣布 TimeSpan? 这是nullable TimeSpan . 如果您不需要它可以为空,请删除问号或使用 variable.Value.TotalHours .

  • 7

    你可能也想看看

    var hours = (datevalue1 - datevalue2).TotalHours;
    
  • 108

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

  • 38

    你有没有理由使用 Nullable

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

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

  • 0

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

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

    a more precise way for employee paid hours or other precision requirement:

    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

  • 156
    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)
    

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

    new TimeSpan(24 * days, 0, 0)
    

相关问题