我想以这种方式来格式化C#的时间跨度:自定义字符串格式
XXX天(S)YYY小时(S)ZZZ分钟
条件:
额外秒数应该被截断
天(s)是我想要的最大单位。我想34天出现34天,而不是1个月4天等。
如果时间跨度少于一天,我不希望一天的部分出现。同样,如果跨度小于1小时,我只需要显示分钟部分。
有没有什么办法可以做到这一点使用内置的格式字符串或没有办法,除了写我自己的功能?
编辑:目前使用我自己的这个功能。这需要时间跨度以分钟为输入(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);
}
我只是好奇......如果天数大于零但小时数为零会发生什么?例如,你会显示“XX天,0小时,YY分钟”还是显示“XX天,YY分钟”?你的代码似乎是做前者的。 – 2010-08-20 10:39:14
是的,在这种情况下,我希望显示0小时.. – 2010-08-20 11:10:12