0Pricing
C# Academy · Lezione

TimeSpan e durate

Misuri intervalli di tempo.

TimeSpan e durate è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Che cos'è un TimeSpan

Mentre DateTime rappresenta un punto nel tempo, TimeSpan rappresenta una durata, ad esempio 2 ore o 90 minuti.

È una durata non associata a un calendario. Si usa per i risultati di un cronometro, i timeout e l'intervallo tra due date.

Creazione di un TimeSpan

Un costruttore accetta ore, minuti e secondi: new TimeSpan(hours, minutes, seconds).

Pertanto new TimeSpan(1, 30, 0) rappresenta un'ora e trenta minuti. Il valore viene visualizzato in un formato chiaro h:mm:ss.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(1, 30, 0);
        Console.WriteLine(span);
    }
}

Metodi factory

Spesso è più leggibile usare un metodo factory. TimeSpan.FromMinutes(90) crea un intervallo di 90 minuti.

Esistono metodi di utilità corrispondenti: FromHours, FromSeconds, FromDays e FromMilliseconds.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span);
    }
}

Valori totali e componenti

TimeSpan dispone di due famiglie di proprietà. Hours, Minutes e Seconds rappresentano le singole componenti.

Le versioni Total..., come TotalMinutes, esprimono l'intera durata in una sola unità, come numero decimale.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.Hours);
        Console.WriteLine(span.TotalMinutes);
    }
}

Differenza tra componenti e totali

Per 90 minuti, Hours vale 1 e Minutes vale 30, perché la durata corrisponde a 1 ora e 30 minuti.

Invece TotalHours vale 1.5 e TotalMinutes vale 90, perché queste proprietà contano l'intero intervallo in una singola unità.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromMinutes(90);
        Console.WriteLine(span.TotalHours);
    }
}

Sottrazione di due date

Quando si sottrae un DateTime da un altro, il risultato è un TimeSpan.

È il modo più comune per determinare quanto tempo è trascorso tra due momenti, ad esempio la durata di un evento.

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime end = new DateTime(2024, 3, 5, 11, 30, 0);
        TimeSpan diff = end - start;
        Console.WriteLine(diff.TotalHours);
    }
}

Sommare TimeSpan

È possibile sommare o sottrarre valori TimeSpan con i normali operatori + e -.

Combinando due durate se ne ottiene una più lunga, utile per sommare diversi intervalli.

using System;

class Program
{
    static void Main()
    {
        TimeSpan a = TimeSpan.FromMinutes(45);
        TimeSpan b = TimeSpan.FromMinutes(15);
        Console.WriteLine((a + b).TotalMinutes);
    }
}

Durate negative

Un TimeSpan può essere negativo se la fine precede l'inizio o in seguito a una sottrazione.

Il metodo Duration restituisce il valore assoluto e Negate ne inverte il segno. Sono utili quando interessa solo il valore assoluto.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = TimeSpan.FromHours(-3);
        Console.WriteLine(span.Duration().TotalHours);
    }
}

Confronto tra durate

I valori TimeSpan si confrontano con <, > e ==, proprio come i numeri.

Questo consente di verificare se una durata è maggiore di un'altra, ad esempio per imporre un tempo massimo consentito.

using System;

class Program
{
    static void Main()
    {
        TimeSpan limit = TimeSpan.FromHours(2);
        TimeSpan used = TimeSpan.FromMinutes(150);
        Console.WriteLine(used > limit);
    }
}

Zero e costanti

TimeSpan.Zero rappresenta l'assenza di tempo trascorso ed è un punto di partenza utile per le somme.

Esistono anche TimeSpan.MinValue e TimeSpan.MaxValue, che rappresentano i limiti estremi di una durata.

using System;

class Program
{
    static void Main()
    {
        TimeSpan total = TimeSpan.Zero;
        total += TimeSpan.FromMinutes(10);
        Console.WriteLine(total.TotalMinutes);
    }
}

Formattazione di un TimeSpan

È possibile formattare un TimeSpan con una stringa personalizzata. Ad esempio, @"hh\:mm" mostra ore e minuti.

Le barre rovesciate fanno sì che i due punti vengano interpretati letteralmente. Per un output rapido, il metodo predefinito ToString è solitamente sufficiente.

using System;

class Program
{
    static void Main()
    {
        TimeSpan span = new TimeSpan(2, 5, 0);
        Console.WriteLine(span.ToString(@"hh\:mm"));
    }
}

Verifica rapida

Si dispone di un TimeSpan di 90 minuti. Quale proprietà restituisce il valore 1.5?

Riepilogo

Un TimeSpan è una durata. Lo si può creare con new TimeSpan(...) o con metodi factory come FromMinutes.

Le proprietà delle componenti, come Hours, differiscono dalle proprietà Total.... La sottrazione di due DateTime produce un TimeSpan, ed è possibile sommare, confrontare e formattare le durate.

Domande Frequenti

La lezione «TimeSpan e durate» è gratuita?

Sì — il testo completo di «TimeSpan e durate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «TimeSpan e durate»?

Misuri intervalli di tempo. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «TimeSpan e durate»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creare DateTime
  2. Formattazione delle date
  3. TimeSpan e durate
  4. Aritmetica delle date
← Torna a C# Academy