0Pricing
C# Academy · Lekcja

TimeSpan i czas trwania

Zm ierzy Pan/Pani odcinki czasu.

TimeSpan i czas trwania to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Czym jest TimeSpan

Podczas gdy DateTime oznacza konkretny punkt w czasie, TimeSpan reprezentuje długość trwania, na przykład 2 godziny lub 90 minut.

Jest to czas trwania niezwiązany z kalendarzem. Używa się go do przechowywania wyników pomiaru czasu, limitów czasu oraz odstępu między dwiema datami.

Tworzenie TimeSpan

Jeden z konstruktorów przyjmuje godziny, minuty i sekundy: new TimeSpan(hours, minutes, seconds).

Zatem new TimeSpan(1, 30, 0) oznacza godzinę i trzydzieści minut. Wartość jest wyświetlana w czytelnym układzie h:mm:ss.

using System;

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

Metody fabrykujące

Często czytelniej jest użyć metody fabrykującej. TimeSpan.FromMinutes(90) tworzy przedział czasu wynoszący 90 minut.

Dostępne są również odpowiadające jej metody pomocnicze: FromHours, FromSeconds, FromDays i FromMilliseconds.

using System;

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

Wartości całkowite a składowe

TimeSpan ma dwa rodzaje właściwości. Hours, Minutes i Seconds przedstawiają czas w rozbiciu na składowe.

Wersje Total..., takie jak TotalMinutes, wyrażają cały czas trwania w jednej jednostce jako liczbę dziesiętną.

using System;

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

Składowe a wartość całkowita

Dla 90 minut właściwość Hours ma wartość 1, a Minutes ma wartość 30, ponieważ czas ten składa się z 1 godziny i 30 minut.

Natomiast TotalHours ma wartość 1.5, a TotalMinutes ma wartość 90, ponieważ właściwości te wyrażają cały przedział czasu w jednej jednostce.

using System;

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

Odejmowanie dwóch dat

Po odjęciu jednej wartości DateTime od drugiej wynikiem jest TimeSpan.

To codziennie stosowany sposób obliczania czasu, który upłynął między dwoma momentami, na przykład czasu trwania wydarzenia.

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

Dodawanie wartości TimeSpan

Wartości TimeSpan można dodawać i odejmować za pomocą zwykłych operatorów + i -.

Połączenie dwóch czasów trwania daje dłuższy przedział, co przydaje się do sumowania kilku odcinków czasu.

using System;

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

Ujemne czasy trwania

TimeSpan może mieć wartość ujemną, jeśli koniec przypada przed początkiem albo w wyniku odejmowania.

Metoda Duration zwraca wartość bezwzględną, a Negate zmienia znak. Przydaje się to, gdy znaczenie ma wyłącznie długość przedziału.

using System;

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

Porównywanie czasów trwania

Wartości TimeSpan można porównywać za pomocą operatorów <, > i ==, podobnie jak liczby.

Pozwala to sprawdzić, czy jeden czas trwania jest dłuższy od drugiego, na przykład w celu wymuszenia maksymalnego dozwolonego czasu.

using System;

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

Zero i stałe

TimeSpan.Zero oznacza brak upływu czasu i jest przydatnym punktem początkowym podczas sumowania.

Dostępne są również TimeSpan.MinValue i TimeSpan.MaxValue, określające skrajne wartości czasu trwania.

using System;

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

Formatowanie TimeSpan

TimeSpan można formatować za pomocą niestandardowego ciągu. Na przykład @"hh\:mm" wyświetla godziny i minuty.

Ukośniki wsteczne oznaczają dwukropek jako znak dosłowny. W przypadku szybkiego wyświetlania zwykle wystarczy domyślna metoda ToString.

using System;

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

Szybkie sprawdzenie

Mają Państwo wartość TimeSpan wynoszącą 90 minut. Która właściwość zwróci wartość 1.5?

Podsumowanie

TimeSpan oznacza czas trwania. Można go utworzyć za pomocą new TimeSpan(...) lub metod fabrykujących, takich jak FromMinutes.

Właściwości składowych (Hours) różnią się od właściwości Total.... Odejmowanie dwóch wartości DateTime daje TimeSpan, a czasy trwania można dodawać, porównywać i formatować.

Często zadawane pytania

Czy lekcja „TimeSpan i czas trwania” jest bezpłatna?

Tak — pełny tekst „TimeSpan i czas trwania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „TimeSpan i czas trwania”?

Zm ierzy Pan/Pani odcinki czasu. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „TimeSpan i czas trwania”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tworzenie DateTime
  2. Formatowanie dat
  3. TimeSpan i czas trwania
  4. Operacje na datach
← Powrót do C# Academy