Используйте DisplayFormat в Asp.Net Core для отображения прошедшего времени - PullRequest
0 голосов
/ 16 октября 2018

У меня есть класс 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 голосов
/ 17 октября 2018

Я решил добавить функцию в представление:

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>
...