我想以这种方式在 C# 中格式化 TimeSpan:
xxx 天 yyy 小时 zzz 分钟
条件:
额外的秒数应该被截断
天是我想要的最大单位。我希望 34 天显示为 34 天,而不是 1 个月 4 天等。
如果时间跨度小于一天,我不希望出现一天部分。同样,如果跨度小于 1 小时,我只想显示分钟部分。
有什么办法可以使用内置格式字符串来做到这一点,或者除了编写自己的函数之外别无他法?
编辑:目前为此使用我自己的功能。以分钟为单位的 TimeSpan 作为输入(TimeSpan.TotalMinutes)
:
private static string GetTimeStringFromMinutes(double p)
{
var minutes = (int) p;
int hours = minutes / 60;
minutes = minutes % 60;
int days = hours/24;
hours = hours%24;
string dayPart = days + " day(s) ";
string hoursPart = hours + " hour(s) ";
string minutesPart = minutes + " minute(s)";
if (days != 0)
return (dayPart + hoursPart + minutesPart);
if (hours != 0)
return (hoursPart + minutesPart);
return (minutesPart);
}