arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

DateTime: leren werken met objecten

hashtag
DateTime

De .NET klasse DateTime is de ideale manier om te leren werken met objecten. Het is een nuttige en toegankelijk klasse.

Grote delen van deze tekst komen van zetoode.comarrow-up-right.

hashtag
DateTime objecten aanmaken

Er zijn 2 manieren om DateTime objecten aan te maken:

  1. Door aan de klasse de huidige datum en tijd te vragen via DateTime.Now

  2. Door manueel de datum en tijd in te stellen via de constructor

hashtag
DateTime.Now

Volgend voorbeeld toont hoe we een object kunnen maken dat de huidige datum tijd van het systeem bevat. Vervolgens printen we dit op het scherm:

hashtag
Met constructor

Via de constructor kunnen we beginwaarden meegeven bij het maken van een nieuw object. Er zijn 11 manieren waarop dit kan zoals je .

Enkele voorbeelden:

hashtag
DateTime methoden

Ieder DateTime object dat je aanmaakt heeft en hoop nuttige methoden.

hashtag
Add Methods

Deze methoden kan je gebruiken om een bepaalde aantal dagen, uren, minuten en zo voort aan je huidige object toe te voegen. Al deze methoden geven steeds een nieuw DateTime object terug dat je moet bewaren wil je er iets mee doen:

  • AddDays

  • AddHours

  • AddMilliseconds

Een voorbeeld:

(voorgaande kan ook in 1 lijn: DateTime nextWeek= DateTime.Now.AddDays(7))

Uiteraard mag je ook een bestaand object overschrijven met het resultaat van deze methoden:

hashtag
DateTime properties

Properties (eigenschappen) zijn een zeer uniek aspect van C#. We zullen deze nog tot in den treuren leren maken. Via properties kan je de interne staat van objecten uitlezen én aanpassen, dit op een gecontroleerde manier.

Het fijne aan properties is dat :

  • je gebruikt ze alsof het gewone variabelen zijn

  • maar ze werken als methoden

Meer hierover later.

Enkele nuttige properties van DateTime zijn:

  • Date

  • Day

  • DayOfWeek

hashtag
Properties gebruiken

Sommige properties zijn read-only, andere kan je zowel naar schrijven als uitlezen. Alle properties van DateTime zijn read-only*..

Een voorbeeld:

Uiteraard mag je ook deze properties gebruiken om direct naar het scherm te schrijven:

hashtag
Datum en tijd formateren

Je hebt een invloed op hoe DateTime objecten naar string worden opgezet. Je kan dit door door extra formatter syntax mee te geven.

Dit zie je in volgende voorbeeld:

hashtag
Custom format

Wil je nog meer controle over de output dan kan je ook zelf je formaat specifieren.

hashtag
Localized time

De manier waarop DateTime objecten worden getoond (via ToString) is afhankelijk van de landinstellingen van je systeem. Soms wil je echter op een andere manier dit tonen. Je doet dit door mee te geven volgens welke culture de tijd en datum getoond moet worden.

Dit vereist dat je eerst een CultureInfo aanmaakt en dat je dan meegeeft:

hashtag
Culture names

Een lijst van alle cultures in .NET kan je . Opgelet, enkel indien een specifieke culture op je computer staat geïnstalleerd zal je deze kunnen gebruiken.

hashtag
Static method

Sommige methoden zijn static dat wil zeggen dat je ze enkel rechtstreeks op de klasse kunt aanroepen. Vaak zijn deze methoden hulpmethoden waar de individuele objecten niets aan hebben.

hashtag
Parsing time

Parsen laat toe dat je strings omzet naar DateTime. Dit is handig als je bijvoorbeeld de gebruiker via ReadLine tijd en datum wilt laten invoeren:

Zoals je ziet roepen we Parse aan op DateTime en dus niet op een specifiek object.

hashtag
IsLeapYear

Deze nuttige methode geeft een bool terug om aan te geven het meegegeven object eens schrikkeljaar is of niet:

hashtag
TimeSpan (PRO)

Je kan DateTime objecten ook bij mekaar optellen en aftrekken. Het resultaat van deze bewerking geeft echter NIET een DateTime object terug, maar een TimeSpan object. Dit is een object dat dus aangeeft hoe groot het verschil is tussen de 2 DateTime objecten:

hashtag
Oefening

hashtag
Klokje

Maak een applicatie die bestaat uit een oneindige loop. De loop zal iedere seconde pauzeren: System.Threading.Thread.Sleep(1000);. Vervolgens wordt het scherm leeg gemaakt en wordt de huidige tijd getoond. Merk op dat ENKEL de tijd wordt getoond, niet de datum.

hashtag
Verjaardag

Maak een applicatie die aan de gebruiker vraagt op welke dag hij jarig is. Toon vervolgens over hoeveel dagen z'n verjaardag dan zal zijn.

AddMinutes
  • AddMonths

  • AddSeconds

  • AddTicks

  • AddYears

  • DayOfYear
  • Hour

  • Millisecond

  • Minute

  • Month

  • Second

  • Ticks

  • TimeOfDay

  • Today

  • UtcNow

  • Year

  • hier kan zienarrow-up-right
    Dit wordt hier volledig uit de doeken gedaan.arrow-up-right
    hier terugvindenarrow-up-right
            DateTime currentTime = DateTime.Now;
            Console.WriteLine(currentTime);
    DateTime birthday = new DateTime(1982, 3, 18); //year, month, day
    
    DateTime someMomentInTime = new DateTime(2017, 1, 18, 10, 16,34 ); //year, month, day, hour, min, sec
    DateTime timeNow= DateTime.Now;
    
    DateTime nextWeek= timeNow.AddDays(7);
    DateTime someTime= new DateTime(2019, 4, 1);
    
    //much later...
    someTime = someTime.AddYears(10);
    Console.WriteLine(someTime);
    DateTime moment = new DateTime(1999, 1, 13, 3, 57, 32, 11);
    
    // Year gets 1999.
    int year = moment.Year;
    
    // Month gets 1 (January).
    int month = moment.Month;
    
    // Day gets 13.
    int day = moment.Day;
    
    // Hour gets 3.
    int hour = moment.Hour;
    
    // Minute gets 57.
    int minute = moment.Minute;
    
    // Second gets 32.
    int second = moment.Second;
    
    // Millisecond gets 11.
    int millisecond = moment.Millisecond;
    DateTime now = DateTime.Now;
    
    Console.WriteLine($"The current day is {now.DayOfWeek}");
    DateTime now = DateTime.Now;
    
    WriteLine(now.ToString("d")); // short date 
    WriteLine(now.ToString("D")); // long date
    WriteLine(now.ToString("F")); // full date and time
    WriteLine(now.ToString("M")); // month and day
    WriteLine(now.ToString("o")); // date en time separated by T and time zone at the end
    WriteLine(now.ToString("R")); // RFC1123 date and time
    WriteLine(now.ToString("t")); // short time
    WriteLine(now.ToString("T")); // long time
    WriteLine(now.ToString("Y")); // year and month
    DateTime now = DateTime.Now;
    CultureInfo russianCI = new CultureInfo("ru-RU");
    
    Console.WriteLine($"Current time in Russian style is: {now.ToString("F", russianCI)}");
    string date_string = "8/11/2016"; //dit zou dus ook door gebruiker kunnen ingetypt zijn
    DateTime dt = DateTime.Parse(date_string);
    Console.WriteLine(dt);
    DateTime today= DateTime.Now;
    bool isLeap= DateTime.IsLeapYear(today.Year);
    if(isLeap==true)
        Console.WriteLine("This year is a leap year");
    DateTime today = DateTime.Today;
    DateTime borodino_battle = new DateTime(1812, 9, 7);
    
    TimeSpan diff = today - borodino_battle;
    
    WriteLine("{0} days have passed since the Battle of Borodino.", diff.TotalDays);