如何在C#中乘以TimeSpan对象?假设变量duration
是一个TimeSpan,例如,我希望
duration*5
但这会给我一个错误“运算符*不能应用于TimeSpan和int类型”。这是我目前的解决方法
duration+duration+duration+duration+duration
但这并不适用于非整数倍数,例如。duration * 3.5
发布于 2012-03-28 22:01:26
TimeSpan duration = TimeSpan.FromMinutes(1);
duration = TimeSpan.FromTicks(duration.Ticks * 12);
Console.WriteLine(duration);
发布于 2013-01-12 03:45:23
对于那些希望复制和粘贴的人:
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);
}
t
将以150秒结束。
发布于 2012-03-28 22:02:20
TimeSpan
结构不为*
操作符提供重载,因此您必须自己执行此操作:
var result = TimeSpan.FromTicks(duration.Ticks * 5);
https://stackoverflow.com/questions/9909086
复制相似问题