online net convertir c# .net date time timespan

net - datetime to timespan c#



Multiplica TimeSpan en.NET (7)

¿Cómo multiplico un objeto TimeSpan en C #? Asumiendo que la duration variable es un TimeSpan , me gustaría, por ejemplo

duration*5

Pero eso me da un error "el operador * no se puede aplicar a los tipos TimeSpan e int". Esta es mi solución actual

duration+duration+duration+duration+duration

Pero esto no se extiende a múltiplos no enteros, por ej. duration * 3.5


Debe especificar qué miembro quiere multiplicar por 5 -> TimeSpan.TotalMinutes * 5


El problema aquí es que quieres multiplicar el intervalo de tiempo. La solución más simple es usar ticks. p.ej.

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


La estructura TimeSpan no proporciona una sobrecarga para el operador * , por lo que debe hacer esto usted mismo:

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


Para aquellos que desean copiar y pegar:

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)); } } }

Ejemplo de uso:

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

t terminará como 150 segundos.


Puede usar los datos internos de TimeSpan, concretamente ticks.

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



De este articulo

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