Dit naslagwerk bevat alle belangrijke DateTime functionaliteiten die je nodig hebt als C# programmeur. Het is georganiseerd per onderwerp met praktische voorbeelden die je direct kunt gebruiken. Bewaar dit document, want je zult het vaak nodig hebben!
// Lokale tijd (volgens je computer/tijdzone)
DateTime nu = DateTime.Now;
Console.WriteLine(nu); // Bijvoorbeeld: 12/11/2025 14:32:15
// Universele tijd (UTC)
DateTime utcNu = DateTime.UtcNow;
Console.WriteLine(utcNu); // Bijvoorbeeld: 12/11/2025 13:32:15
// Alleen de datum van vandaag (tijd = 00:00:00)
DateTime vandaag = DateTime.Today;
Console.WriteLine(vandaag); // Bijvoorbeeld: 12/11/2025 0:00:00
// Formaat: new DateTime(jaar, maand, dag)
DateTime nieuwjaar = new DateTime(2025, 1, 1);
Console.WriteLine(nieuwjaar); // 1/01/2025 0:00:00
// Met tijd erbij: new DateTime(jaar, maand, dag, uur, minuut, seconde)
DateTime afspraak = new DateTime(2025, 12, 25, 15, 30, 0);
Console.WriteLine(afspraak); // 25/12/2025 15:30:00
// Met milliseconden
DateTime precies = new DateTime(2025, 6, 15, 10, 30, 45, 500);
Console.WriteLine(precies); // 15/06/2025 10:30:45.500
// Automatisch parsen (let op: formaat hangt af van systeeminstellingen!)
DateTime datum1 = DateTime.Parse("25/12/2025");
DateTime datum2 = DateTime.Parse("12-11-2025 14:30");
// Veilig parsen (geeft false als het niet lukt)
bool gelukt = DateTime.TryParse("31/02/2025", out DateTime resultaat);
if (gelukt)
{
Console.WriteLine("Datum is geldig: " + resultaat);
}
else
{
Console.WriteLine("Ongeldige datum!");
}
Elke DateTime heeft handige properties om onderdelen op te vragen:
DateTime moment = new DateTime(2025, 11, 12, 14, 32, 15);
// Datum onderdelen
Console.WriteLine(moment.Year); // 2025
Console.WriteLine(moment.Month); // 11
Console.WriteLine(moment.Day); // 12
Console.WriteLine(moment.DayOfWeek); // Tuesday (enum)
Console.WriteLine(moment.DayOfYear); // 316 (de 316e dag van het jaar)
// Tijd onderdelen
Console.WriteLine(moment.Hour); // 14
Console.WriteLine(moment.Minute); // 32
Console.WriteLine(moment.Second); // 15
Console.WriteLine(moment.Millisecond); // 0
// Alleen datum of alleen tijd
Console.WriteLine(moment.Date); // 12/11/2025 0:00:00 (tijd = 00:00:00)
Console.WriteLine(moment.TimeOfDay); // 14:32:15 (TimeSpan)
// Technische informatie
Console.WriteLine(moment.Ticks); // 638360639350000000 (aantal ticks)
Console.WriteLine(moment.Kind); // Unspecified (of Local/Utc)
DateTime datum = DateTime.Now;
// DayOfWeek is een enum met waarden:
// Sunday = 0, Monday = 1, Tuesday = 2, Wednesday = 3,
// Thursday = 4, Friday = 5, Saturday = 6
if (datum.DayOfWeek == DayOfWeek.Saturday || datum.DayOfWeek == DayOfWeek.Sunday)
{
Console.WriteLine("Het is weekend! π");
}
else
{
Console.WriteLine("Doordeweekse dag, tijd om te werken!");
}
// In het Nederlands tonen
string[] dagenNL = { "zondag", "maandag", "dinsdag", "woensdag",
"donderdag", "vrijdag", "zaterdag" };
string dagNL = dagenNL[(int)datum.DayOfWeek];
Console.WriteLine($"Vandaag is het {dagNL}");
DateTime start = new DateTime(2025, 1, 1, 10, 0, 0);
// Tijd toevoegen met Add... methodes
DateTime plus5Dagen = start.AddDays(5); // 6/01/2025 10:00:00
DateTime plus3Maanden = start.AddMonths(3); // 1/04/2025 10:00:00
DateTime plus2Jaar = start.AddYears(2); // 1/01/2027 10:00:00
DateTime plus2Uur = start.AddHours(2); // 1/01/2025 12:00:00
DateTime plus30Minuten = start.AddMinutes(30); // 1/01/2025 10:30:00
DateTime plus45Seconden = start.AddSeconds(45); // 1/01/2025 10:00:45
// Tijd aftrekken (gebruik negatieve getallen)
DateTime min1Week = start.AddDays(-7); // 25/12/2024 10:00:00
DateTime min1Uur = start.AddHours(-1); // 1/01/2025 9:00:00
// Combineren
DateTime complex = start.AddMonths(2).AddDays(15).AddHours(3);
Console.WriteLine(complex); // 16/03/2025 13:00:00
DateTime start = new DateTime(2025, 1, 1, 10, 0, 0);
DateTime einde = new DateTime(2025, 1, 5, 14, 30, 0);
// Het verschil is een TimeSpan
TimeSpan verschil = einde - start;
Console.WriteLine(verschil.Days); // 4 (aantal volledige dagen)
Console.WriteLine(verschil.Hours); // 4 (resterende uren na dagen)
Console.WriteLine(verschil.Minutes); // 30 (resterende minuten)
// Totaal in verschillende eenheden
Console.WriteLine(verschil.TotalDays); // 4,1875 (totaal in dagen, als kommagetal)
Console.WriteLine(verschil.TotalHours); // 100,5 (totaal in uren)
Console.WriteLine(verschil.TotalMinutes); // 6030 (totaal in minuten)
Console.WriteLine(verschil.TotalSeconds); // 361800 (totaal in seconden)
// Mooi formatteren
Console.WriteLine($"Verschil: {verschil.Days} dagen, {verschil.Hours} uren en {verschil.Minutes} minuten");
DateTime geboortedatum = new DateTime(2008, 3, 15);
DateTime vandaag = DateTime.Today;
int leeftijd = vandaag.Year - geboortedatum.Year;
// Controleren of verjaardag al geweest is dit jaar
if (vandaag.Month < geboortedatum.Month ||
(vandaag.Month == geboortedatum.Month && vandaag.Day < geboortedatum.Day))
{
leeftijd--; // Nog niet jarig geweest dit jaar
}
Console.WriteLine($"Leeftijd: {leeftijd} jaar");
DateTime datum1 = new DateTime(2025, 6, 15);
DateTime datum2 = new DateTime(2025, 12, 25);
DateTime datum3 = new DateTime(2025, 6, 15);
// Operatoren gebruiken
bool isKleiner = datum1 < datum2; // true
bool isGroter = datum1 > datum2; // false
bool isGelijk = datum1 == datum3; // true
bool isNietGelijk = datum1 != datum2; // true
// CompareTo gebruiken (retourneert -1, 0, of 1)
int resultaat = datum1.CompareTo(datum2);
// -1 als datum1 < datum2
// 0 als datum1 == datum2
// 1 als datum1 > datum2
// Praktisch voorbeeld
if (DateTime.Now > new DateTime(2025, 12, 25))
{
Console.WriteLine("Kerstmis is al geweest!");
}
else
{
Console.WriteLine("Kerstmis moet nog komen!");
}
DateTime nu = DateTime.Now;
DateTime afspraak = new DateTime(2025, 12, 25, 14, 0, 0);
// Alleen datum vergelijken (tijd negeren)
bool zelfdedag = nu.Date == afspraak.Date;
// Is een datum in het verleden?
bool inVerleden = afspraak < DateTime.Now;
// Is een datum in de toekomst?
bool inToekomst = afspraak > DateTime.Now;
// Ligt een datum tussen twee andere datums?
DateTime start = new DateTime(2025, 1, 1);
DateTime einde = new DateTime(2025, 12, 31);
bool tussenIn = afspraak >= start && afspraak <= einde;
DateTime nu = new DateTime(2025, 11, 12, 14, 32, 15);
// Standaard weergave (hangt af van systeeminstellingen)
Console.WriteLine(nu.ToString()); // 12/11/2025 14:32:15
// Alleen datum
Console.WriteLine(nu.ToShortDateString()); // 12/11/2025
Console.WriteLine(nu.ToLongDateString()); // dinsdag 12 november 2025
// Alleen tijd
Console.WriteLine(nu.ToShortTimeString()); // 14:32
Console.WriteLine(nu.ToLongTimeString()); // 14:32:15
De krachtigste manier om datums te formatteren:
DateTime moment = new DateTime(2025, 11, 12, 14, 5, 3);
// Datum formaten
Console.WriteLine(moment.ToString("dd/MM/yyyy")); // 12/11/2025
Console.WriteLine(moment.ToString("MM-dd-yyyy")); // 11-12-2025
Console.WriteLine(moment.ToString("yyyy.MM.dd")); // 2025.11.12
Console.WriteLine(moment.ToString("dd MMMM yyyy")); // 12 november 2025
Console.WriteLine(moment.ToString("ddd dd MMM yy")); // di 12 nov 25
// Tijd formaten
Console.WriteLine(moment.ToString("HH:mm")); // 14:05
Console.WriteLine(moment.ToString("HH:mm:ss")); // 14:05:03
Console.WriteLine(moment.ToString("hh:mm tt")); // 02:05 PM
// Combinaties
Console.WriteLine(moment.ToString("dd/MM/yyyy HH:mm")); // 12/11/2025 14:05
Console.WriteLine(moment.ToString("dddd d MMMM yyyy 'om' HH:mm")); // dinsdag 12 november 2025 om 14:05
Console.WriteLine(moment.ToString("'Vandaag is' dddd")); // Vandaag is dinsdag
// Speciale codes
Console.WriteLine(moment.ToString("yyyy")); // 2025 (jaar, 4 cijfers)
Console.WriteLine(moment.ToString("yy")); // 25 (jaar, 2 cijfers)
Console.WriteLine(moment.ToString("MMMM")); // november (maand, volledig)
Console.WriteLine(moment.ToString("MMM")); // nov (maand, verkort)
Console.WriteLine(moment.ToString("MM")); // 11 (maand, nummer met leading zero)
Console.WriteLine(moment.ToString("M")); // 11 (maand, nummer)
Console.WriteLine(moment.ToString("dddd")); // dinsdag (dag, volledig)
Console.WriteLine(moment.ToString("ddd")); // di (dag, verkort)
Console.WriteLine(moment.ToString("dd")); // 12 (dag, met leading zero)
Console.WriteLine(moment.ToString("d")); // 12 (dag)
Console.WriteLine(moment.ToString("HH")); // 14 (uur, 24-uurs formaat)
Console.WriteLine(moment.ToString("hh")); // 02 (uur, 12-uurs formaat)
Console.WriteLine(moment.ToString("mm")); // 05 (minuut)
Console.WriteLine(moment.ToString("ss")); // 03 (seconde)
Console.WriteLine(moment.ToString("tt")); // PM (AM/PM)
TimeSpan representeert een tijdsduur (niet een specifiek moment).
// Directe constructie (dagen, uren, minuten, seconden)
TimeSpan duur1 = new TimeSpan(2, 5, 30, 0); // 2 dagen, 5 uren, 30 minuten
TimeSpan duur2 = new TimeSpan(0, 2, 30, 45); // 2 uren, 30 minuten, 45 seconden
// Via FromXXX methodes (vaak makkelijker)
TimeSpan duur3 = TimeSpan.FromDays(3); // 3 dagen
TimeSpan duur4 = TimeSpan.FromHours(2.5); // 2,5 uur = 2u 30min
TimeSpan duur5 = TimeSpan.FromMinutes(90); // 90 minuten = 1u 30min
TimeSpan duur6 = TimeSpan.FromSeconds(3600); // 3600 seconden = 1 uur
// Via verschil tussen twee DateTime objecten
DateTime start = new DateTime(2025, 1, 1, 10, 0, 0);
DateTime einde = new DateTime(2025, 1, 1, 14, 30, 0);
TimeSpan verschil = einde - start; // 4 uren en 30 minuten
TimeSpan duur = new TimeSpan(2, 5, 30, 45); // 2 dagen, 5u, 30min, 45sec
// Onderdelen (hele getallen)
Console.WriteLine(duur.Days); // 2
Console.WriteLine(duur.Hours); // 5
Console.WriteLine(duur.Minutes); // 30
Console.WriteLine(duur.Seconds); // 45
// Totalen (kommagetallen)
Console.WriteLine(duur.TotalDays); // 2,2296875
Console.WriteLine(duur.TotalHours); // 53,5125
Console.WriteLine(duur.TotalMinutes); // 3210,75
Console.WriteLine(duur.TotalSeconds); // 192645
TimeSpan duur1 = TimeSpan.FromHours(2);
TimeSpan duur2 = TimeSpan.FromMinutes(30);
// Optellen
TimeSpan totaal = duur1 + duur2; // 2u 30min
Console.WriteLine(totaal); // 02:30:00
// Aftrekken
TimeSpan verschil = duur1 - duur2; // 1u 30min
Console.WriteLine(verschil); // 01:30:00
// Vermenigvuldigen
TimeSpan dubbel = duur1 * 2; // 4 uur
Console.WriteLine(dubbel); // 04:00:00
TimeSpan duur = new TimeSpan(2, 5, 30, 45);
// Standaard formaat
Console.WriteLine(duur.ToString()); // 2.05:30:45
// Custom formaat
Console.WriteLine(duur.ToString(@"d\.hh\:mm\:ss")); // 2.05:30:45
Console.WriteLine(duur.ToString(@"hh\:mm")); // 05:30
Console.WriteLine($"{duur.Days}d {duur.Hours}u {duur.Minutes}min"); // 2d 5u 30min
DateTime nieuwjaar = new DateTime(2026, 1, 1, 0, 0, 0);
DateTime nu = DateTime.Now;
TimeSpan verschil = nieuwjaar - nu;
if (verschil.TotalSeconds > 0)
{
Console.WriteLine($"Nog {verschil.Days} dagen, {verschil.Hours} uren en {verschil.Minutes} minuten tot Nieuwjaar!");
}
else
{
Console.WriteLine("Gelukkig Nieuwjaar!");
}
DateTime startWerk = new DateTime(2025, 11, 12, 9, 0, 0);
DateTime eindeWerk = new DateTime(2025, 11, 12, 17, 30, 0);
TimeSpan pauze = TimeSpan.FromMinutes(45);
TimeSpan totaleAanwezigheid = eindeWerk - startWerk;
TimeSpan werkelijkWerktijd = totaleAanwezigheid - pauze;
Console.WriteLine($"Aanwezig: {totaleAanwezigheid.TotalHours:F2} uur");
Console.WriteLine($"Werkelijk gewerkt: {werkelijkWerktijd.TotalHours:F2} uur");
int jaar = 2024;
bool isSchrikkeljaar = DateTime.IsLeapYear(jaar);
if (isSchrikkeljaar)
{
Console.WriteLine($"{jaar} is een schrikkeljaar (366 dagen)");
}
else
{
Console.WriteLine($"{jaar} is geen schrikkeljaar (365 dagen)");
}
int jaar = 2025;
int maand = 2; // februari
int aantalDagen = DateTime.DaysInMonth(jaar, maand);
Console.WriteLine($"Februari {jaar} heeft {aantalDagen} dagen");
DateTime startWeek = DateTime.Today;
// Ga naar de eerste dag van deze week (maandag)
while (startWeek.DayOfWeek != DayOfWeek.Monday)
{
startWeek = startWeek.AddDays(-1);
}
Console.WriteLine("Deze week:");
for (int i = 0; i < 7; i++)
{
DateTime dag = startWeek.AddDays(i);
Console.WriteLine($"{dag.ToString("dddd dd/MM")}: {dag.DayOfWeek}");
}
DateTime start = DateTime.Now;
// Doe iets dat tijd kost
for (int i = 0; i < 1000000; i++)
{
// Berekening...
}
DateTime einde = DateTime.Now;
TimeSpan uitvoeringstijd = einde - start;
Console.WriteLine($"Code duurde {uitvoeringstijd.TotalMilliseconds} milliseconden");
DateTime datum = new DateTime(2025, 1, 1);
datum.AddDays(5); // β FOUT! Dit verandert 'datum' NIET
// β
JUIST: ken het resultaat toe aan een variabele
DateTime nieuweDatum = datum.AddDays(5);
DateTime datum1 = new DateTime(2025, 1, 15); // β
Januari (maand 1)
DateTime datum2 = new DateTime(2025, 0, 15); // β ERROR! Maand 0 bestaat niet
DateTime datum = new DateTime(2025, 1, 31); // 31 januari
DateTime volgendeMaand = datum.AddMonths(1); // 28 februari! (geen 31 februari)
// Opslaan in database: gebruik UTC
DateTime tijdstempelDatabase = DateTime.UtcNow;
// Tonen aan gebruiker: gebruik lokale tijd
DateTime tijdstempelWeergave = DateTime.Now;
DateTime.Now - huidige lokale tijdDateTime.UtcNow - huidige UTC tijdDateTime.Today - huidige datum (tijd = 00:00:00)new DateTime(jaar, maand, dag) - specifieke datumDateTime.Parse(string) / DateTime.TryParse(string, out DateTime) - van stringYear, Month, Day - datum onderdelenHour, Minute, Second, Millisecond - tijd onderdelenDayOfWeek - dag van de week (enum)DayOfYear - dag nummer in het jaar (1-366)Date - alleen datum gedeelteTimeOfDay - alleen tijd gedeelte (TimeSpan)Ticks - aantal ticks sinds 1/1/0001AddDays(double), AddMonths(int), AddYears(int) - datum toevoegenAddHours(double), AddMinutes(double), AddSeconds(double) - tijd toevoegenToString(string) - formatteren naar stringCompareTo(DateTime) - vergelijkenIsLeapYear(int) - controleer schrikkeljaarDaysInMonth(int jaar, int maand) - aantal dagen in maandnew TimeSpan(dagen, uren, minuten, seconden) - aanmakenTimeSpan.FromDays/Hours/Minutes/Seconds(double) - makkelijker aanmakenDays, Hours, Minutes, Seconds - onderdelenTotalDays, TotalHours, TotalMinutes, TotalSeconds - totalenDit naslagwerk bevat de belangrijkste functionaliteiten van DateTime. Bewaar het goed, want je zult het regelmatig nodig hebben! Voor meer gedetailleerde informatie kun je altijd de officiΓ«le Microsoft documentatie raadplegen.