C++ Academy · Les

Tijdstippen

Geef momenten in de tijd weer

Les 2 van 413 stappen

Tijdstippen is een gratis C++ Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.

Wat is een tijdpunt?

Een std::chrono::time_point stelt een specifiek moment voor, gemeten vanaf het tijdperk van een klok. Het koppelt een klok aan een tijdsduur sinds dat tijdperk.

  • Wordt teruggegeven door clock::now().
  • Als je twee tijdpunten van elkaar aftrekt, krijg je een tijdsduur.
#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    time_point<steady_clock> tp = steady_clock::now();
    std::cout << "Captured a moment: " << (tp.time_since_epoch().count() != 0) << '\n';
    return 0;
}

time_since_epoch

Elk tijdpunt kan met time_since_epoch() zijn afstand tot het tijdperk van de klok melden; deze functie geeft een tijdsduur terug.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto tp = system_clock::now();
    auto d = tp.time_since_epoch();
    auto s = duration_cast<seconds>(d);
    std::cout << "Positive epoch seconds: " << (s.count() > 0) << '\n';
    return 0;
}

Tijdpunten aftrekken

Als je het ene tijdpunt van het andere aftrekt, krijg je een tijdsduur: de verstreken tijd tussen de twee momenten.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto a = steady_clock::now();
    auto b = steady_clock::now();
    auto diff = b - a;
    std::cout << "Elapsed ns is non-negative: " << (diff.count() >= 0) << '\n';
    return 0;
}

Een tijdsduur optellen

Als je een tijdsduur bij een tijdpunt optelt, krijg je een nieuw tijdpunt in de toekomst (of in het verleden bij aftrekken). Zo bereken je deadlines.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    using namespace std::chrono_literals;
    auto now = steady_clock::now();
    auto deadline = now + 10s;
    std::cout << "Deadline is after now: " << std::boolalpha << (deadline > now) << '\n';
    return 0;
}

Tijdpunten vergelijken

Tijdpunten van dezelfde klok ondersteunen alle vergelijkingsoperatoren, zodat je kunt controleren of het ene moment vóór of na het andere ligt.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto first = steady_clock::now();
    auto second = steady_clock::now();
    std::cout << std::boolalpha << (first <= second) << '\n';
    return 0;
}

Klokspecifieke tijdpunten

Een tijdpunt is gekoppeld aan het type van zijn klok. Je kunt een tijdpunt van system_clock niet rechtstreeks vergelijken met een tijdpunt van steady_clock, omdat hun tijdperken verschillen.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    system_clock::time_point sys = system_clock::now();
    steady_clock::time_point mono = steady_clock::now();
    std::cout << "Both captured: " << ((sys.time_since_epoch().count() != 0) && (mono.time_since_epoch().count() != 0)) << '\n';
    return 0;
}

Omzetten naar time_t

system_clock::to_time_t zet een tijdpunt op de kalender om naar een C-achtige time_t die je kunt opmaken voor weergave aan gebruikers.

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    using namespace std::chrono;
    auto tp = system_clock::now();
    std::time_t t = system_clock::to_time_t(tp);
    std::cout << "time_t is positive: " << (t > 0) << '\n';
    return 0;
}

from_time_t

Het omgekeerde, system_clock::from_time_t, maakt een tijdpunt uit een time_t-waarde, zoals een opgeslagen tijdstempel.

#include <iostream>
#include <chrono>
#include <ctime>

int main() {
    using namespace std::chrono;
    std::time_t t = 1000000000;
    auto tp = system_clock::from_time_t(t);
    auto back = system_clock::to_time_t(tp);
    std::cout << "Round trip ok: " << std::boolalpha << (back == t) << '\n';
    return 0;
}

Een deadline berekenen

Een veelgebruikt patroon: leg now() vast, tel een tijdsduur voor de time-out op en vergelijk later met een nieuwe now() om te controleren of de deadline is verstreken.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    using namespace std::chrono_literals;
    auto deadline = steady_clock::now() + 0ms;
    auto current = steady_clock::now();
    bool expired = current >= deadline;
    std::cout << "Expired: " << std::boolalpha << expired << '\n';
    return 0;
}

Precisie van tijdpunten

De precisie van een tijdpunt komt overeen met het type tijdsduur van zijn klok. Je kunt een tijdpunt met time_point_cast omzetten naar een grovere eenheid.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto tp = system_clock::now();
    auto secs_tp = time_point_cast<seconds>(tp);
    std::cout << "Cast preserved sign: " << (secs_tp.time_since_epoch().count() > 0) << '\n';
    return 0;
}

Tijdstempels opslaan

Als je een moment wilt bewaren, zet je het om naar een aantal seconden sinds het tijdperk, sla je het gehele getal op en reconstrueer je het tijdpunt later wanneer dat nodig is.

#include <iostream>
#include <chrono>

int main() {
    using namespace std::chrono;
    auto tp = system_clock::now();
    long long stored = duration_cast<seconds>(tp.time_since_epoch()).count();
    std::cout << "Stored value usable: " << (stored > 0) << '\n';
    return 0;
}

Korte toets

Toets je begrip van rekenkundige bewerkingen met tijdpunten.

Overzicht

Je hebt geleerd dat een time_point:

  • een specifiek moment markeert ten opzichte van het tijdperk van een klok
  • zijn verschuiving meldt via time_since_epoch()
  • het optellen en aftrekken van tijdsduren en vergelijkingen ondersteunt
  • voor weergave en opslag kan worden omgezet naar en vanuit time_t

Vervolgens gebruik je deze hulpmiddelen om code te benchmarken en de prestaties ervan te meten.

Gratis beginnen

Leer C++ met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “Tijdstippen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “Tijdstippen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.

Wat leer ik in “Tijdstippen”?

Geef momenten in de tijd weer Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C++ Academy te beginnen?

Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Tijdstippen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C++ Academy?

Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Tijdsintervallen en klokken
  2. Tijdstippen
  3. Codeprestaties meten
  4. Kalender en tijdzones
← Terug naar C++ Academy