【问题标题】:Calculate difference between two datetime entities计算两个日期时间实体之间的差异
【发布时间】:2016-08-23 04:38:23
【问题描述】:

我的模特是

public class abc
{
   public DateTime StartDate{get;set;}
   public DateTime EndDate{get;set;}
}

我已经截取了我的数据库列。我想在我的 Web 应用程序中显示 StartDate 和 EndDate 之间的小时差。我怎样才能做到这一点。我正在使用实体框架。

【问题讨论】:

    标签: c# sql-server entity-framework asp.net-mvc-5


    【解决方案1】:

    你可以计算小时差

    TimeSpan diff = EndDate - StartDate;
    double hours = diff.TotalHours;
    

    如果StartDate 和EndDate 是nullable 那么

    TimeSpan? diff = EndDate.Value - StartDate.Value;
    double hours = diff.TotalHours;
    

    【讨论】:

    • 我没有在 DateTime 类型的实例上得到这个 TotalHours 属性。您使用的是哪个 .Net 框架版本?
    • @RBT 看我的更新希望这次不会有问题
    • @Mostafiz 这应该在模型或控制器中完成?
    • 视情况而定,但一般最好在控制器中进行
    • @Mostafiz 如果我使用 Linq 和 Lambda 表达式来访问数据库条目怎么办?
    【解决方案2】:

    计算差异为:

    var diffHours = (endDateTime- startDateTime).TotalHours
    

    【讨论】:

    • 不错!取两个 DateTime 实例的差异会导致 TimeSpan 具有此 TotalHours 属性的对象。 +1。
    【解决方案3】:

    另一个选项可以添加NotMapped 属性来计算它。您的模型应如下所示:

    public class abc
    {
       public DateTime StartDate { get; set; }
       public DateTime EndDate { get; set; }
    
       [NotMapped]
       public double HourDifference
       {
            get 
            { 
                return (EndDate - StartDate).TotalHours;
            }
       }
    }
    

    从数据库中获取数据后,您可以使用HourDifference 显示差异。

    【讨论】:

    • 我无法在模型中使用 TotalHours
    • 你说的无法使用是什么意思?
    • 应该不会有这样的问题。看看this .net fiddle example。
    【解决方案4】:

    试试这个..它会给你不同的日子..

    TimeSpan tSpan = (abc.EndDate.Value).Subtract(abc.StartDate.Value);
    var NoOfDays = tSpan.Days;
    

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 2011-08-01
      • 1970-01-01
      • 2018-08-17
      相关资源
      最近更新 更多