在.NET中乘以TimeSpan

如何乘以C#中的TimeSpan对象? 假设可变duration是一个TimeSpan ,我想,例如

 duration*5 

但是,这给了我一个错误“运算符*不能应用于typesTimeSpan和int”。 这是我目前的解决方法

 duration+duration+duration+duration+duration 

但是这不会扩展到非整数倍数,例如。 duration * 3.5

从这篇文章

 TimeSpan duration = TimeSpan.FromMinutes(1); duration = TimeSpan.FromTicks(duration.Ticks * 12); Console.WriteLine(duration); 

对于那些希望复制和粘贴的人:

 namespace Utility { public static class TimeSpanExtension { /// <summary> /// Multiplies a timespan by an integer value /// </summary> public static TimeSpan Multiply(this TimeSpan multiplicand, int multiplier) { return TimeSpan.FromTicks(multiplicand.Ticks * multiplier); } /// <summary> /// Multiplies a timespan by a double value /// </summary> public static TimeSpan Multiply(this TimeSpan multiplicand, double multiplier) { return TimeSpan.FromTicks((long)(multiplicand.Ticks * multiplier)); } } } 

用法示例:

 using Utility; private static void Example() { TimeSpan t = TimeSpan.FromSeconds(30).Multiply(5); } 

最终将会达到150秒。

TimeSpan结构不提供*运算符的重载,所以你必须自己去做:

 var result = TimeSpan.FromTicks(duration.Ticks * 5); 

您可以使用TimeSpan的内部数据,即刻度线。

 TimeSpan day = TimeSpan.FromDays(1); TimeSpan week = TimeSpan.FromTicks(day.Ticks * 7); 

您需要指定您想要乘以5 – > TimeSpan.TotalMinutes * 5

这里的问题是你想要乘以时间跨度。 最简单的解决方法是使用滴答。 例如。

  var ticks = TimeSpan.FromMinutes(1).Ticks; var newTimeSpan = TimeSpan.FromTicks(ticks*5);