使用 C# 计算 MVC 模型中的时间跨度

Posted

技术标签:

【中文标题】使用 C# 计算 MVC 模型中的时间跨度【英文标题】:Calculate time span in MVC Model using C# 【发布时间】:2019-10-17 21:26:30 【问题描述】:

我的 MVC 项目中有一个存储活动的模型。我需要显示开始时间和结束时间之间的差异。 这是我的模型类:

[Table("DailyCrewActivity")]
public partial class DailyCrewActivity

    [Key]
    public int id  get; set; 

    [Display(Name = "Crew Name")]
    [ForeignKey("DailyCrew")]
    public int daily_crew_id  get; set; 

    [Display(Name = "Task Number")]
    [ForeignKey("ContractTask")]
    public int contract_task_id  get; set; 

    [Display(Name = "Activity Date")]
    [DisplayFormat(DataFormatString = "0:MM/dd/yyyy")]
    public DateTime activity_date  get; set; 

    [Required]
    [StringLength(50)]
    [Display(Name = "Activity Code")]
    public string activity_code  get; set; 

    [Display(Name = "Start Time")]
    [DisplayFormat(DataFormatString = "0:hh:mm")]
    public string activity_start  get; set; 

    [Display(Name = "End Time")]
    [DisplayFormat(DataFormatString = "0:hh:mm")]
    public string activity_end  get; set; 

    [NotMapped]
    [Display(Name = "Hours")]
    [DisplayFormat(DataFormatString = "0:#.##")]
    public decimal ElapsedTime
    
        get
        
            decimal duration = 0;
            if (String.IsNullOrEmpty(activity_start) && String.IsNullOrEmpty(activity_end))
            

                TimeSpan spanStart;
                TimeSpan spanEnd;
                if (TimeSpan.TryParse(activity_start, out spanStart) && TimeSpan.TryParse(activity_end, out spanEnd))
                
                    duration = Convert.ToDecimal(spanEnd - spanStart);
                

            
            return duration;
        
    

    public DailyCrew DailyCrew  get; set; 
    public ContractTask ContractTask  get; set; 


我没有得到返回到 ElapsedTime 的计算。是因为我将时间存储在一个字符串中,然后将其解析为 TimeSpan 吗? 我不确定这是怎么回事。

谢谢

瑞恩

【问题讨论】:

String.IsNullOrEmpty(activity_start) && String.IsNullOrEmpty(activity_end) 你没有错过!(或== false)吗? 【参考方案1】:

您正在检查两个值是否为空,这不会给您任何信息。您需要检查两者的非空/空值:

if (!String.IsNullOrEmpty(activity_start) && !String.IsNullOrEmpty(activity_end))

    ...

【讨论】:

以上是关于使用 C# 计算 MVC 模型中的时间跨度的主要内容,如果未能解决你的问题,请参考以下文章

linq中的算术运算使用实体框架mvc C#

使用asp.net计算时间跨度[重复]

使用 Asp.Net MVC C# 使用谷歌地图 API 计算 2 个邮政编码之间的距离

计算 2 个时间跨度 DSP 之间的差异

MVC - 数据计算最佳实践 - 视图模型与控制器

无法访问已部署的 c# mvc 项目上的 dll 文件