在.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);