10 Datumhantering

DateTime-objektet i C# är mycket användbart om man ska arbeta med datum och/eller tid. Istället för att själv göra omräkningar mellan år, månader, dagar, timmar, sekunder etc. finns flertalet färdiga metoder som sköter detta åt oss och dessutom ger vår kod relativt god läsbarhet. Lägg så många som möjligt av nedanstående metoder och egenskaper på minnet.

Metod/Egenskap Returnerar/Används till
new DateTime(2018, 8, 13) Skapar ett nytt DateTime-objekt med datumet 13 augusti 2018.
new DateTime(2018, 8, 13, 9, 0, 0) Skapar ett nytt DateTime-objekt med datumet 13 augusti 2018 och tiden 09:00:00.
DateTime.Now Skapar ett nytt DateTime-objekt med dagens datum och nuvarande tid.
DateTime.Today Skapar ett nytt DateTime-objekt med dagens datum.
DateTime.DaysInMonth(2018, 2) Returnera antalet dagar i februari 2018.
DateTime.IsLeapYear(2019) Returnerar sant/falskt om 2019 är skottår eller inte.

Om ett DateTime-objekt har skapats (DateTime date = new DateTime();) och tilldelats till en variabel kan sedan (bland annat) följande metoder/egenskaper användas.

Metod/Egenskap Returnerar/Används till
date.AddDays(3) Returnerar ett nytt DateTime-objekt med ett datum tre dagar framåt jämfört med date.
date.AddSeconds(), date.AddMinutes(), date.AddHours(), date.AddMonths(), date.AddYears()
date.DayOfWeek Returnerar veckodag för date.
date.DayOfYear Returnerar dag på året för date (t.ex. är 2018-10-23 dag 296)
date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second Returnerar respektive enhet för date.
date.ToShortDateString() Returnerar en sträng med datumet för date på formen ”yyyy-mm-dd”.

Tänk på att många av ovanstående behöver man använda ToString() på vid jämförelse med t.ex. en viss veckodag.

10.1 Övningar

Besvara nedanstående frågor genom att skriva små program i Visual Studio där du använder DateTime och de tillhörande egenskaperna/metoderna.

  1. Årets treor på ED tar studenten 2019-06-14. Vilken veckodag och dag på året är detta?

  2. Vad kommer det vara för veckodag på dina närmaste 10 födelsedagar?

  3. Hur många skottår kommer du ha varit med om innan du fyllt 30?

  4. Vilka datum är dom närmsta fem kommande fredag den 13:e?

  5. Redigera i din lösning till övning 24 så att de fem senaste fredag den 13:e visas istället.

  6. Hur många dagar i februari månad har passerat sedan 2000-01-01?