C# Academy · Lekcja

Operacje na datach

Doda, odejmie i porówna Pan/Pani daty.

Lekcja 4 z 413 kroki

Operacje na datach to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 4 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.

Wykonywanie operacji na datach

Wartości DateTime są niezmienne: operacje matematyczne nigdy nie zmieniają oryginalnej wartości. Zamiast tego każda operacja zwraca zupełnie nową wartość DateTime.

W tej lekcji omówiono dodawanie i odejmowanie czasu, porównywanie dat oraz odpowiadanie na pytania takie jak liczba dni pozostałych do wydarzenia.

AddDays

Metoda AddDays zwraca datę przypadającą o podaną liczbę dni później. Aby cofnąć datę, należy przekazać liczbę ujemną.

Wartości DateTime są niezmienne, dlatego trzeba użyć zwróconej wartości; oryginał pozostaje bez zmian.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        DateTime later = d.AddDays(10);
        Console.WriteLine(later.ToString("yyyy-MM-dd"));
    }
}

Rodzina metod Add

Dla każdej jednostki dostępna jest odpowiednia metoda Add: AddHours, AddMinutes, AddSeconds, AddMonths i AddYears.

Wszystkie przyjmują liczby dodatnie lub ujemne, więc jeden zestaw metod obsługuje zarówno przyszłość, jak i przeszłość.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        Console.WriteLine(d.AddHours(5).Hour);
    }
}

AddMonths obsługuje różną długość miesięcy

AddMonths prawidłowo uwzględnia długość miesięcy. Dodanie jednego miesiąca do 31 stycznia daje 28 lub 29 lutego, a nie nieprawidłową datę.

Dzięki temu nie trzeba samodzielnie sprawdzać, ile dni ma każdy miesiąc.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 1, 31);
        Console.WriteLine(d.AddMonths(1).ToString("yyyy-MM-dd"));
    }
}

Cofanie daty

Aby przejść do przeszłości, należy przekazać ujemny argument. AddDays(-7) zwraca datę sprzed tygodnia.

Nie istnieje osobna metoda Subtract-days; wartości ujemne w przejrzysty sposób zapewniają tę samą funkcjonalność.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5);
        Console.WriteLine(d.AddDays(-7).ToString("yyyy-MM-dd"));
    }
}

Dodawanie wartości TimeSpan

Wartość TimeSpan można dodać bezpośrednio do DateTime za pomocą operatora + lub metody Add.

Jest to wygodne, gdy ma już Pan/Pani czas trwania i chce przesunąć o niego datę.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 9, 0, 0);
        DateTime later = d + TimeSpan.FromHours(3);
        Console.WriteLine(later.Hour);
    }
}

Różnica między datami

Odjęcie jednej daty od drugiej tworzy wartość TimeSpan opisującą odstęp między nimi.

Właściwość TotalDays pozwala odczytać liczbę dni między datami, nawet jeśli przypadają one w różnych miesiącach lub latach.

using System;

class Program
{
    static void Main()
    {
        DateTime start = new DateTime(2024, 1, 1);
        DateTime end = new DateTime(2024, 3, 1);
        Console.WriteLine((end - start).TotalDays);
    }
}

Liczba dni do wydarzenia

Typowym zadaniem jest policzenie dni pozostałych do przyszłej daty. Należy odjąć dzisiejszą datę od daty docelowej, a następnie odczytać TotalDays lub Days.

Użycie stałych dat sprawia, że wynik tego przykładu jest przewidywalny podczas nauki.

using System;

class Program
{
    static void Main()
    {
        DateTime today = new DateTime(2024, 3, 1);
        DateTime party = new DateTime(2024, 3, 15);
        Console.WriteLine((party - today).Days);
    }
}

Porównywanie dat

Wartości DateTime można porównywać za pomocą operatorów <, > i ==. Wcześniejsza data jest mniejsza od późniejszej.

Dostępne są również metody takie jak CompareTo i Equals, gdy potrzebny jest formalny wynik porównania.

using System;

class Program
{
    static void Main()
    {
        DateTime a = new DateTime(2024, 1, 1);
        DateTime b = new DateTime(2024, 6, 1);
        Console.WriteLine(a < b);
    }
}

Lata przestępne i liczba dni w miesiącu

Dwie statyczne metody pomocnicze odpowiadają na pytania dotyczące kalendarza. DateTime.IsLeapYear(year) zwraca wartość true dla lat przestępnych.

DateTime.DaysInMonth(year, month) informuje, ile dni ma podany miesiąc, prawidłowo obsługując luty.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(DateTime.IsLeapYear(2024));
        Console.WriteLine(DateTime.DaysInMonth(2024, 2));
    }
}

Początek i koniec dnia

Aby uzyskać początek dnia, należy użyć właściwości Date, która usuwa czas i ustawia północ.

Aby uzyskać ostatni moment dnia, można dodać jeden dzień i odjąć jeden tick albo dodać 23:59:59. Właściwość Date jest najprostszym elementem wyjściowym.

using System;

class Program
{
    static void Main()
    {
        DateTime d = new DateTime(2024, 3, 5, 14, 30, 0);
        Console.WriteLine(d.Date.ToString("yyyy-MM-dd HH:mm"));
    }
}

Szybkie sprawdzenie

Zaczyna Pan/Pani od 31 stycznia 2024 roku i wywołuje AddMonths(1). Jaką datę otrzyma Pan/Pani w wyniku?

Podsumowanie

Operacje matematyczne na DateTime zwracają nowe wartości. Daty można przesuwać za pomocą AddDays, AddMonths i podobnych metod, używając liczb ujemnych do cofania.

Odejmowanie dat daje TimeSpan, daty można porównywać operatorami, a do zadań związanych z kalendarzem służą IsLeapYear, DaysInMonth i Date.

Bezpłatny start

Ucz się C# dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
93
Lekcje
346

Często zadawane pytania

Czy lekcja „Operacje na datach” jest bezpłatna?

Tak — pełny tekst „Operacje na datach” 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 „Operacje na datach”?

Doda, odejmie i porówna Pan/Pani daty. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Operacje na datach”?

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