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
- Creare DateTime
- Formattazione delle date
- TimeSpan e durate
- Aritmetica delle date