如何在毫秒内将 TimeSpan 舍入到一位数

Mar*_*ooo 3 .net c# math timespan rounding

我如何舍入以在毫秒内仅获得一位数字?

我尝试了此链接中的一些解决方案,但没有一个解决方案:Can you round a .NET TimeSpan object?

00:23:01.4999890 -> 00:23:01.5
15:02:02.9999785 -> 15:02:03.0
08:03:59.9605388 -> 08:04:00.0
03:16:00.8605388 -> 03:16:00.9
19:12:01.8420745 -> 19:12:01.8
04:05:03.8417271 -> 04:05:03:8
Run Code Online (Sandbox Code Playgroud)

mar*_*sze 5

您可以像这样舍入到 100 毫秒(10 分之一秒):

var timespan = TimeSpan.Parse("00:23:01.4999890");
var rounded = TimeSpan.FromSeconds(Math.Round(timespan.TotalSeconds, 1));
Run Code Online (Sandbox Code Playgroud)

然后使用自定义格式字符串只显示小数点后的 1 位数字:

rounded.ToString(@"hh\:mm\:ss\.f");
// OUTPUT:
// 00:23:01.5
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用此答案中的扩展方法:

rounded = timespan.Round(TimeSpan.FromMilliseconds(100));
Run Code Online (Sandbox Code Playgroud)