【发布时间】:2020-10-08 11:04:59
【问题描述】:
我想为 TimeSpan 对象实现最灵活的字符串格式。 假设你有这个代码:
string format = ".................";
TimeSpan ts = TimeSpan.FromSeconds(7200);
Debug.WriteLine(ts.ToString(format));
我想指定一个包含字符串格式的参数(在我的控制台应用程序的 app.config 中?)以切换不同的输出格式,而无需接触 C# 代码。例如: 7200sec(仅输出总秒数) 2h 00min 00sec(以友好的方式输出TimeSpan) 120 分钟(仅输出总分钟数) 等等。
我不想针对每种情况调整我的代码。
【问题讨论】:
-
您不能使用格式字符串来执行此操作。您是否正在寻找像 "humanizer" 这样的东西,它找出“最易读”的格式来显示内容?
-
TimeSpan.ToString()使用当前区域性的 DateTimeFormatInfo。这可能是使用环境时间跨度格式属性有意义的唯一情况。即使在同一个表单上,不同的字段也需要不同的格式,例如以秒为单位的持续时间或一天中的时间。可以创建自定义 CultureInfo,但这会影响 每个 DateTime 或 Timespan 序列化