20.02. Struktura za rad sa datumom i vremenom
Rad sa vremenom i datumima u programiranju je od ključnog značaja za mnoge aplikacije, kao što su sistemi za evidenciju, kalendari, planeri i slično. Ovde ćemo se baviti načinima za rad sa vremenom u C# jeziku koristeći strukturu DateTime.
Značaj rada sa vremenom
Mnoge aplikacije zahtevaju precizno evidentiranje trenutnog vremena, trajanja događaja, računanje datuma ili vreme u različitim vremenskim zonama. Pomoću strukture DateTime u jeziku C# moguće je jednostavno:
- Prikazati trenutni datum i vreme.
- Manipulisati datumima i vremenom (dodavanje ili oduzimanje dana, sati, minuta).
- Formatirati datume u različitim stilovima.
- Porediti datume i vremena.
Struktura DateTime se koristi za to (i mnogo drugih primera).
Struktura DateTime
DateTime je strukturisani tip podataka u C# koji se koristi za rad sa datumom i vremenom. Predstavlja datum i vreme kao jedinstvenu celinu, ali može biti korišćen samo za manipulaciju datumom ili samo ya manipulaciju vremenom. Ova struktura sadrži mnogo ugrađenih metoda i svojstava za rad sa vremenom i datumom..
Ključna svojstva strukture DateTime:
Now: Vraća trenutni datum i vreme.Today: Vraća trenutni datum sa vremenom postavljenim na ponoć (00:00:00).Day,Month,Year: Vraćaju dan, mesec i godinu datuma.Hour,Minute,Second: Vraćaju sate, minute i sekunde vremena.DayOfWeek: Vraća dan u nedelji (kao enumeraciju).DayOfYear: Vraća redni broj dana u godini za dati datum.
Ključne metode strukture DateTime:
AddDays(double value): Dodaje navedeni broj dana datumu.AddHours(double value): Dodaje navedeni broj sati.
AddMonths(int months): Dodaje navedeni broj meseci.AddYears(int value): Dodaje navedeni broj godina.
ToString(string format): Formatira datum i vreme u zadatom formatu.
ToShortDateString(): Pretvara datum u kratki format (npr. 22.01.2025).ToLongDateString(): Pretvara datum u dugi format (npr. sreda, 22. januar 2025).
Subtract(DateTime value): Oduzima dva datuma i vraća vremenski interval.Compare(DateTime t1, DateTime t2): Upoređuje dva datuma.
Formati datuma i vremena
U C#, datum i vreme se mogu formatirati koristeći standardne ili prilagođene formate:
- Standardni formati:
dza kratki datum (npr. 22.01.2025).Dza dugi datum (npr. sreda, 22. januar 2025).Tza kratko vreme (npr. 14:35).Fza puni format datuma i vremena (npr. sreda, 22. januar 2025. 14:35:22).
- Prilagođeni formati:
dd/MM/yyyyza datum u formatu dan/mesec/godina.HH:mm:ssza vreme u formatu sati:minute:sekunde.
Primeri
Primer 1: Prikaz trenutnog datuma i vremena
DateTime sada = DateTime.Now;
Console.WriteLine("Trenutni datum i vreme: " + sada);
// prikaz samo današnjeg datuma:
DateTime danas = DateTime.Today;
Console.WriteLine("Današnji datum: " + danas.ToShortDateString());
Primer 2: Dodavanje dana i sati
DateTime sutra = danas.AddDays(1);
DateTime zaSatVremena = DateTime.Now.AddHours(1);
Console.WriteLine("Današnji datum: " + danas.ToShortDateString());
Console.WriteLine("Sutra: " + sutra.ToShortDateString());
Console.WriteLine("Za sat vremena: " + zaSatVremena.ToShortTimeString());
// dodati promenljivu juce = DateTime.AddDays(-1)
Primer 3: Formatiranje datuma
Console.WriteLine("Kratki datum: " + sada.ToString("d"));
Console.WriteLine("Dugi datum: " + sada.ToString("D"));
Console.WriteLine("Vreme: " + sada.ToString("T"));
Console.WriteLine("Prilagođeni format: " + sada.ToString("dd.MM.yyyy. HH:mm"));
Primer 4: Poređenje datuma
// opcija 1:
DateTime prviDatum = new DateTime(2025, 1, 22);
DateTime drugiDatum = new DateTime(2025, 1, 25);
int rezultat = DateTime.Compare(prviDatum, drugiDatum);
if (rezultat < 0)
Console.WriteLine("Prvi datum je pre drugog.");
else if (rezultat == 0)
Console.WriteLine("Datumi su isti.");
else
Console.WriteLine("Prvi datum je posle drugog.");
// opcija 2: uporediti promenljive danas, juce i sutra
Primer 5: Prikaz dana u nedelji
Console.WriteLine("Današnji dan u nedelji: " + danas.DayOfWeek);
Zadaci za vežbu:
-
Računanje rođendana: Napisati program koji pita korisnika za datum rođenja i izračunava koliko ima dana do sledećeg rođendana.
Izračunavanje starosti: Napisati program koji traži od korisnika datum rođenja i izračunava njegovu starost u godinama, mesecima i danima.
Dan u nedelji: Napisati program koji omogućava korisniku da unese datum, a zatim prikazuje koji je dan u nedelji za taj datum.
-
Razlika između datuma: Napisati program koji traži dva datuma od korisnika i prikazuje razliku između njih u danima.
-
Formatiranje vremena: Napisati program koji trenutno vreme prikazuje u različitim formatima, uključujući prilagođene.
-
Dodavanje vremena: Napisati program koji korisnika pita koliko dana, sati i minuta želi da doda trenutnom vremenu, a zatim prikazuje rezultat.
Dodavanje godina: Napisati program koji traži trenutni datum i dodaje 5 godina, a zatim prikazuje novi datum.