我有一个生成时间跨度的代码来计算某些操作的持续时间。 我想要做的是将结果(持续时间)除以一个数字,任何数字。
我怎样才能做到这一点?
您可以使用原始时间跨度的刻度:
var res = new TimeSpan(origSpan.Ticks / aNumberAnyNumber);
TimeSpan ts = ...
TimeSpan result = TimeSpan.FromTicks(ts.Ticks / divisor);
使用
Total*
的 TimeSpan
属性之一,即数字。
即如果您正在运行您测量的某些代码的五次迭代,那么您可以使用
myTimeSpan.TotalMilliseconds / 5
获取每次迭代的平均毫秒数。您可以使用
Ticks
获取基础值,并根据除法结果构造一个新的 TimeSpan
。
如果您想最终得到一个新的 TimeSpan,它是旧的 TimeSpan 的一小部分:
TimeSpan now = DateTime.Now.TimeOfDay;
TimeSpan halfOfNow = new TimeSpan(now.Ticks / 2);
取决于您想要划分的内容,但假设您想要秒数,则可以使用totalseconds属性。
TimeSpan ts = new TimeSpan(4, 0, 0); //Four hours
MessageBox.Show((ts.TotalSeconds / 4).ToString());
自 .NET Standard 2.1 起,
TimeSpan
现在支持除法。
使用示例:
TimeSpan timeSpan = ...
int divisor = ...
TimeSpan result = timeSpan / divisor;
我来到这里寻找一种将 TimeSpan 划分为新的 TimeSpan 且不会得到小数秒的方法。 根据我在这里发现的内容,我想出了:
TimeSpan DivTime = TimeSpan.FromSeconds((long)SourceTime.TotalSeconds / divisor);