Uitgebreide Gids voor Datum en Tijd in C++
De C++ standaardbibliotheek biedt geen eigen datumtype. C++ overerft de structs en functies voor datum- en tijdmanipulatie van C. Om toegang te krijgen tot datum- en tijdgerelateerde functies en structuren, moet u de
Er zijn vier tijd-gerelateerde typen: clock_t, time_t, size_t, en tm. De typen - clock_t, size_t en time_t zijn in staat om de systeemtijd en datum als een soort integer weer te geven.
De structuurtype tm houdt de datum en tijd in de vorm van een C-structuur met de volgende elementen:
struct tm {
int tm_sec; // seconden van minuten van 0 tot 61
int tm_min; // minuten van uren van 0 tot 59
int tm_hour; // uren van dag van 0 tot 24
int tm_mday; // dag van maand van 1 tot 31
int tm_mon; // maand van jaar van 0 tot 11
int tm_year; // jaar sinds 1900
int tm_wday; // dagen sinds zondag
int tm_yday; // dagen sinds 1 januari
int tm_isdst; // uren van zomertijd
}
Hier volgen de belangrijke functies die we gebruiken tijdens het werken met datum en tijd in C of C++. Al deze functies maken deel uit van de standaard C en C++ bibliotheek en u kunt hun details controleren via de referentie naar de C++ standaardbibliotheek hieronder.
| Nr. | Functie & Doel |
|---|---|
| 1 | time_t time(time_t *time); Dit retourneert de huidige kalendertijd van het systeem in aantal seconden verstreken sinds 1 januari 1970. Als het systeem geen tijd heeft, wordt .1 geretourneerd. |
| 2 | char *ctime(const time_t *time); Dit retourneert een pointer naar een string van de vorm dag maand jaar uren:minuten:seconden jaar\n\0. |
| 3 | struct tm *localtime(const time_t *time); Dit retourneert een pointer naar de tm structuur die lokale tijd vertegenwoordigt. |
| 4 | clock_t clock(void); Dit retourneert een waarde die het bedrag aan tijd benadert dat het aanroepende programma al draait. Een waarde van .1 wordt geretourneerd als de tijd niet beschikbaar is. |
| 5 | char * asctime ( const struct tm * time ); Dit retourneert een pointer naar een string die de informatie bevat opgeslagen in de structuur waarnaar time wijst, geconverteerd naar de vorm: dag maand datum uren:minuten:seconden jaar\n\0 |
| 6 | struct tm *gmtime(const time_t *time); Dit retourneert een pointer naar de tijd in de vorm van een tm structuur. De tijd wordt vertegenwoordigd in Coordinated Universal Time (UTC), wat essentieel Greenwich Mean Time (GMT) is. |
| 7 | time_t mktime(struct tm *time); Dit retourneert het kalendertijd-equivalent van de tijd gevonden in de structuur waarnaar time wijst. |
| 8 | double difftime ( time_t time2, time_t time1 ); Deze functie berekent het verschil in seconden tussen time1 en time2. |
| 9 | size_t strftime(); Deze functie kan gebruikt worden om datum en tijd in een specifiek formaat te formatteren. |
Huidige Datum en Tijd
Stel u wilt de huidige systeemdatum en tijd ophalen, ofwel als lokale tijd of als Coordinated Universal Time (UTC). Hier is het voorbeeld om dit te bereiken:
Live Demo #include <iostream>
#include <ctime>
using namespace std;
int main() {
// huidige datum/tijd gebaseerd op huidige systeemtijd
time_t now = time(0);
// converteer now naar string vorm
char* dt = ctime(&now);
cout << "The local date and time is: " << dt << endl;
// converteer now naar tm struct voor UTC
tm *gmtm = gmtime(&now);
dt = asctime(gmtm);
cout << "The UTC date and time is:"<< dt << endl;
}
Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:
The local date and time is: Sat Jan 8 20:07:41 2011 The UTC date and time is:Sun Jan 9 03:07:41 2011
Tijd Formatteren met struct tm
De tm structuur is erg belangrijk tijdens het werken met datum en tijd in C of C++. Deze structuur houdt de datum en tijd in de vorm van een C-structuur zoals hierboven vermeld. De meeste tijdgerelateerde functies maken gebruik van de tm structuur. Hier volgt een voorbeeld dat gebruikmaakt van diverse datum- en tijdfuncties en de tm structuur:
Terwijl ik structuur in dit hoofdstuk gebruik, maak ik de aanname dat u basiskennis heeft van C-structuur en hoe u structuurleden benadert met de pijl -> operator.
Live Demo #include <iostream>
#include <ctime>
using namespace std;
int main() {
// huidige datum/tijd gebaseerd op huidige systeemtijd
time_t now = time(0);
cout << "Number of sec since January 1,1970 is:: " << now << endl;
tm *ltm = localtime(&now);
// print diverse componenten van tm structuur.
cout << "Year:" << 1900 + ltm->tm_year<<endl;
cout << "Month: "<< 1 + ltm->tm_mon<< endl;
cout << "Day: "<< ltm->tm_mday << endl;
cout << "Time: "<< 5+ltm->tm_hour << ":";
cout << 30+ltm->tm_min << ":";
cout << ltm->tm_sec << endl;
}
Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:
Number of sec since January 1,1970 is:: 1588485717 Year:2020 Month: 5 Day: 3 Time: 11:31:57
C Taal
- Spanning en stroom berekenen in reactieve DC circuits
- C++ Structuren vs Classes: Een praktische gids voor embedded-ontwikkelaars
- C++ variabelen, literalen en constanten: een uitgebreide gids
- C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
- C++ Geheugenbeheer meesteren: Expert gebruik van new en delete
- C++ Overerving Beheersen: Public, Protected & Private Uitgelegd
- C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
- C++ Overloading Beheersen: Functies & Operators Uitgelegd
- File I/O in C++ Beheersen: Lezen en Schrijven met fstream
- Huidige datum en tijd ophalen in Python: een praktische gids
- Java 8: De Robuuste Nieuwe Date/Time API