Operacje na datach
Doda, odejmie i porówna Pan/Pani daty.
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.
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
- Tworzenie DateTime
- Formatowanie dat
- TimeSpan i czas trwania
- Operacje na datach