TimeSpan în C# (.NET)

.NET BCL și CLI-ul dotnet .NET Framework 1.0

Reprezintă o durată (ore, minute, secunde): creare, adunare, proprietăți Total* și formatare ca text.

Sintaxă C#
var t = new TimeSpan(2, 30, 0);   TimeSpan.FromMinutes(90)   t.TotalMinutes

Ce face TimeSpan

TimeSpan măsoară un interval de timp, de exemplu durata unui film sau diferența dintre două DateTime. Se creează cu constructorul (ore, minute, secunde) sau cu metodele FromDays, FromHours, FromMinutes, FromSeconds, FromMilliseconds.

Proprietățile Hours, Minutes, Seconds dau doar componenta respectivă (0-23, 0-59), iar TotalHours, TotalMinutes, TotalSeconds dau toată durata în unitatea respectivă, ca double. ToString() afișează formatul [z.]hh:mm:ss; pentru alt format, separatorii se scriu cu backslash: @"hh\:mm".

Exemple

Exemplul 1: Creare, componente și totaluri

var film = new TimeSpan(2, 30, 0);
Console.WriteLine(film);
Console.WriteLine(film.TotalMinutes);
Console.WriteLine($"{film.Hours} h {film.Minutes} min");

var total = film + TimeSpan.FromMinutes(45);
Console.WriteLine(total.ToString(@"hh\:mm"));
Console.WriteLine(TimeSpan.FromHours(36));

Rezultat

02:30:00
150
2 h 30 min
03:15
1.12:00:00

Exemplul 2: Durata totală a unei liste de melodii

TimeSpan.Parse("03:45") ar însemna 3 ore și 45 de minute, așa că minutele și secundele se citesc cu ParseExact.

using System.Globalization;

string[] melodii = ["03:45", "04:10", "02:55"];
TimeSpan total = TimeSpan.Zero;

foreach (string m in melodii)
    total += TimeSpan.ParseExact(m, @"mm\:ss", CultureInfo.InvariantCulture);

Console.WriteLine(total.ToString(@"mm\:ss"));
Console.WriteLine(total.TotalSeconds);
Console.WriteLine(total > TimeSpan.FromMinutes(10));

Rezultat

10:50
650
True

Greșeli frecvente

  • Confuzia dintre Minutes (componenta, 0-59) și TotalMinutes (toată durata): pentru 2 h 30 min, Minutes este 30, iar TotalMinutes 150.
  • În formatele personalizate, : și . trebuie scăpate (\:), altfel primești FormatException.
  • Formatul hh arată doar orele din zi (0-23); pentru durate peste o zi, include și %d sau folosește TotalHours.

Comenzi înrudite

  • DateTime: Reprezintă o dată cu oră: creare, adunare de zile și luni, diferențe, formatare și citire din text cu ParseExact.
  • DateOnly și TimeOnly: DateOnly ține doar o zi din calendar, TimeOnly doar o oră din zi: potrivite pentru zile de naștere, scadențe și program de lucru.
  • Formatarea numerelor și string.Format: Specificatori de format (N2, F1, D5, X) și aliniere în string.Format, ToString și șiruri interpolate, cu cultura ro-RO.