使用 C# 在 MVC 模型中计算时间跨度
Calculate time span in MVC Model using C#
我的 MVC 项目中有一个存储活动的模型。我需要显示开始时间和结束时间之间的差异。
这是我的模型 class:
[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 吗?
我不确定这是怎么回事。
谢谢
瑞安
您正在检查两个值是否为空,这不会给您任何信息。您需要检查两者是否 empty/nulls:
if (!String.IsNullOrEmpty(activity_start) && !String.IsNullOrEmpty(activity_end))
{
...
}
我的 MVC 项目中有一个存储活动的模型。我需要显示开始时间和结束时间之间的差异。 这是我的模型 class:
[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 吗? 我不确定这是怎么回事。
谢谢
瑞安
您正在检查两个值是否为空,这不会给您任何信息。您需要检查两者是否 empty/nulls:
if (!String.IsNullOrEmpty(activity_start) && !String.IsNullOrEmpty(activity_end))
{
...
}