TimeSpan的字符串格式非常灵活

问题描述

我想为TimeSpan对象实现最灵活的字符串格式。 假设您具有以下代码

string format = ".................";
TimeSpan ts = TimeSpan.FromSeconds(7200);
Debug.WriteLine(ts.ToString(format));

我想指定一个参数(在控制台应用程序的app.config中?),该参数包含一个字符串格式以切换不同的输出格式而无需触摸C#代码。例如: 7200sec(仅输出总秒数) 2h 00min 00sec(以友好的方式输出TimeSpan) 120分钟(仅输出总分钟) 等等。

我不想针对每种情况修改我的代码

解决方法

TimeSpan.ToStringstring.format的混合应该有用。

string format = "{2}h {0:%mm}min {0:%ss}sec";
string format2 = "{4}min";
TimeSpan ts = TimeSpan.FromSeconds(7200);
Console.WriteLine(string.Format(format,ts,ts.TotalDays,ts.TotalHours,ts.TotalMinutes,ts.TotalSeconds));
Console.WriteLine(string.Format(format2,ts.TotalSeconds));