在Asp.Net Core中使用DisplayFormat显示经过的时间

时间:2018-10-16 14:49:42

标签: asp.net-core asp.net-core-mvc asp.net-core-2.1

我有一个ViewModel类,其中有一个名为Duration的列,其中包含两个DatetTime列之间的小时数(在查询中计算):

public Int32 Duration { get; set; }

我希望我可以使用注释来显示经过的时间,以天和小时为单位(例如0d 15h)。

这不起作用:

[DisplayFormat(DataFormatString = "{0:dd hh}")]

使用TimeSpan的逻辑:

DateTime s;
DateTime.TryParse("2015-03-18 15:00:42.920",out s);
DateTime e;
DateTime.TryParse("2015-03-19 06:52:44.440",out e);
TimeSpan t = e - s;
Console.WriteLine(String.Format("{0}d {1}h", t.Days, t.Hours));

有没有一种方法可以使用数据注释(单独)来实现这一目标?

1 个答案:

答案 0 :(得分:0)

我决定向视图添加功能:

public string Elapsed(Int32 duration)
{
    TimeSpan t = TimeSpan.FromHours(duration);
    return String.Format("{0}d {1}h", t.Days, t.Hours);
}

然后引用它:

<td> @Elapsed(item.Duration) </td>