我的应用程序显示了估计的完成时间(ETA)。
我不想为用户提供完全格式化的TimeSpan
,而是仅显示最相关的单位。用户不想看到 0:00:39,766 。
例如,如果TimeSpan
是
我希望被格式化为“ 12天”
如果TimeSpan
是
它仅应显示“ 5小时”,因为小时数与分钟数相比,使分钟数无关紧要。
几分钟也一样。 15分钟15分钟3秒的格式应相同。
是否有标准化的方法?
答案 0 :(得分:4)
没有标准方式,但是您可以实现扩展方法:
public static partial class TimeSpanExtensions {
public static string ToMyFormat(this TimeSpan ts) {
return ts.Days != 0 ? $"{ts.Days} days"
: ts.Hours != 0 ? $"{ts.Hours} hours"
: ts.Minutes != 0 ? $"{ts.Minutes} minutes"
: ts.Seconds != 0 ? $"{ts.Seconds} seconds"
: $"{ts.Milliseconds} milliseconds";
}
}
然后使用它:
TimeSpan test = new TimeSpan(0, 415, 48, 44, 452);
// 17 days (415 = 17 * 24 + 7 - 17 days 7 hours)
Console.Write(ts.ToMyFormat());