我想以這種方式來格式化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