c# - 使用 C# 计算 MVC 模型中的时间跨度
问题描述
我的 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 吗?我不确定发生了什么。
谢谢
瑞安
解决方案
您正在检查两个值是否为空,这不会给您任何东西。您需要检查两者的非空/空值:
if (!String.IsNullOrEmpty(activity_start) && !String.IsNullOrEmpty(activity_end))
{
...
}
推荐阅读
- r - 如何计算 R quosure 中的变量数?
- python - 我的代码在运行时会打印它之前的输出。我希望它只打印该特定计数所需的内容
- html - 为什么 table-layout: fixed 会影响父元素的宽度?
- html - 通过调用css中的类来更改父级中子级的字体颜色和高度
- c++ - 如何将使用 ExternalProject_Add 安装的库添加到目标包括
- sql - 时区 Rails Postgres
- java - 带有 DBRef 的 Mongo 文档
- ruby - 如何从 BasicObject 中访问 Ruby 类型名称
- javascript - 数组元素的依从性属性 i
- angular - 如何为电子邮件制作输入掩码?