Умножить промежуток времени in.NET
Как умножить объект TimeSpan в C#? Предполагая, что переменная duration
это TimeSpan, хотелось бы, например
duration*5
но это дает мне ошибку "оператор * не может быть применен к типам TimeSpan и int". Вот мой текущий обходной путь
duration+duration+duration+duration+duration
но это не распространяется на не-кратные, например. duration * 3.5
7 ответов:
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); }
t
в конечном итоге, как 150 секунд.
The
TimeSpan
структура не обеспечивает перегрузку для*
оператора, так что вы должны сделать это сами:var result = TimeSpan.FromTicks(duration.Ticks * 5);
вы можете использовать внутренние данные TimeSpan, а именно тики.
TimeSpan day = TimeSpan.FromDays(1); TimeSpan week = TimeSpan.FromTicks(day.Ticks * 7);