TimeSpansをC#で次のようにフォーマットしたいと思います。
xxx日yyy時間zzz分
条件:
余分な秒は切り捨てる必要があります
日は私が欲しい最大の単位です。34日を1か月4日ではなく34日として表示したい。
期間が1日未満の場合、その日の部分を表示したくありません。同様に、スパンが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);
}