91 votes

Multipliez TimeSpan dans .NET

Comment multiplier un objet TimeSpan en C #? En supposant que la variable duration est un TimeSpan , j'aimerais par exemple

 duration*5
 

Mais cela me donne une erreur "L'opérateur * ne peut pas être appliqué aux types TimeSpan et int". Voici ma solution de contournement actuelle

 duration+duration+duration+duration+duration
 

Mais cela ne s'étend pas aux multiples non entiers, par exemple. duration * 3.5

106voto

Justin Pihony Points 21088

De cet article

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

47voto

Stephen Hewlett Points 1459

Pour ceux qui souhaitent copier et coller:

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

Exemple d'utilisation:

 using Utility;

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

t finira par 150 secondes.

13voto

Kent Boogaart Points 97432

La structure TimeSpan ne génère pas de surcharge pour l'opérateur * , vous devez donc le faire vous-même:

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

5voto

Kendall Frey Points 19670

Vous pouvez utiliser les données internes de TimeSpan, à savoir les ticks.

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

2voto

PedroC88 Points 1217

Vous devez spécifier le membre que vous souhaitez multiplier par 5 -> TimeSpan.TotalMinutes * 5

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X