© Harry Broeders.
Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft.
De include file time.h is opgenomen in de C ANSI standaard. Deze headerfile bevat een aantal types en functies om te werken met het begrip tijd.
Dit zijn de belangrijkste types die in time.h gedefinieerd zijn:
time_t
Een tijdstip inclusief de datum kan in standaard C worden opgeslagen als
een groot geheel getal. Dit getal geeft het aantal seconden aan dat verlopen
is sinds 00:00:00 GMT, January 1, 1970. Om tijdstippen in deze vorm te kunnen
gebruiken kun je een variabele genaamd tijd
als volgt
definiëren:
time_t tijd;
De variabele tijd
kan nu bewerkt worden met de volgende
functies:
Functie | Beschrijving |
---|---|
time(&tijd) |
Haalt de huidige tijd en datum uit het operating systeem. Als de tijd
en datum niet beschikbaar is wordt tijd gelijk aan -1. |
ctime(&tijd) |
Converteert de variabele tijd naar een string. Deze functie
geeft een pointer naar de string terug. |
localtime(&tijd) |
Converteert de variabele tijd naar een voorgedefineerde
structuur tm . Deze functie geeft een pointer
naar een struct tm terug. |
struct tm
In standaard C is een structuur gedefinieerd waarin de tijd kan worden
opgeslagen. Dit is de struct
tm
. Om de struct te gebruiken wordt hieronder een variabele
t
gedeclareerd met:
struct tm t;
De struct
tm
heeft de
volgende veldnamen:
Veldnaam | Beschrijving |
---|---|
tm_sec |
Seconden |
tm_min |
Minuten |
tm_hour |
Uren |
tm_mday |
Dag van de maand (1..31) |
tm_mon |
Maand (0=januari) |
tm_year |
Jaar - 1900 (Dus 110 = 2010) |
tm_wday |
Dag van de week (0=zondag) |
tm_yday |
Dag van het jaar (0..365) |
tm_isdst |
Zomertijd 0=Nee, >0=Ja, <0=Onbekend |
De huidige tijd kan als volgt naar een
struct
tm
worden omgezet:
time_t tijd;
struct tm* pt;
time(&tijd);
pt = localtime(&tijd);
printf("De datum is: %02d-%02d-%4d.\n", pt->tm_mday, pt->tm_mon + 1, pt->tm_year + 1900);
printf("De tijd is: %02d:%02d:%02d.\n", pt->tm_hour, pt->tm_min, pt->tm_sec);
De struct
tm
kan bewerkt worden met de volgende
functies:
Functie | Beschrijving |
---|---|
asctime(&t) |
Converteert de structuur tm naar een string. |
mktime(&t) |
Conveerteert de structuur tm naar een variabele van het
type t_time |
Het programma demotijd.c haalt de huidige tijd en datum op en drukt die op verschillende manieren af.
#include <stdio.h>
#include <time.h>
int main(void) {
time_t tijd;
struct tm* pt;
/* De tijd en datum ophalen uit het operating systeem */
time(&tijd);
if (tijd != -1) {
/* De tijd en datum afdrukken zonder het gebruik van de structuur tm */
printf("Vandaag is het volgens het operating systeem van de computer:\n%s\n", ctime(&tijd));
/* De tijd en datum omzetten naar de structuur tm*/
pt = localtime(&tijd);
/* De tijd en datum afdrukken met de structuur tm */
printf("Vandaag is het dag %d van het jaar %d.\n", pt->tm_yday + 1, pt->tm_year + 1900);
printf("De datum is: %02d-%02d-%4d.\n", pt->tm_mday, pt->tm_mon + 1, pt->tm_year + 1900);
printf("De tijd is: %02d:%02d:%02d.\n", pt->tm_hour, pt->tm_min, pt->tm_sec);
if (pt->tm_isdst >= 0) {
printf("Het is ");
if (pt->tm_isdst == 0) {
printf("wintertijd.\n");
}
else {
printf("zomertijd.\n");
}
}
}
else {
printf("Datum en tijd zijn niet beschikbaar op dit systeem.\n");
}
getchar();
return 0;
}
Uitvoer:
Het programma welkedag.c leest een datum in en drukt dan af welke dag het op die datum is.
#include <stdio.h>
#include <time.h>
int main(void) {
struct tm t, *pt;
time_t tijd;
char* dag[] = {"zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"};
/* stuct tm t vullen */
printf("Geef de datum.\n");
do {
printf("Dag (1..31): ");
fflush(stdin);
}
while (scanf("%d", &t.tm_mday) != 1 || t.tm_mday < 1 || t.tm_mday > 31);
do {
printf("Maand (1..12): ");
fflush(stdin);
}
while (scanf("%d", &t.tm_mon) != 1 || t.tm_mon < 1 || t.tm_mon > 12);
t.tm_mon -= 1;
do {
printf("Jaar (1970..2037): ");
fflush(stdin);
}
while (scanf("%d", &t.tm_year) != 1 || t.tm_year < 1970 || t.tm_year > 2037);
t.tm_year -= 1900;
t.tm_sec = 0;
t.tm_min = 0;
t.tm_hour = 0;
t.tm_isdst = -1;
/* struct tm omzetten naar een time_t */
tijd = mktime(&t);
if (tijd == -1) {
printf("Ongeldige datum!\n");
}
else {
/* time_t weer terug omzetten naar een struct tm */
pt = localtime(&tijd);
/* De dag van de week afdrukken */
printf("%02d-%02d-%4d is een %s.\n", pt->tm_mday, pt->tm_mon + 1, pt->tm_year + 1900, dag[pt->tm_wday]);
}
fflush(stdin);
getchar();
return 0;
}
Uitvoer:
De ingetypte invoer is geel weergegeven.
Details over de in de include file time.h gedeclareerde types en functies kun je vinden op: http://en.cppreference.com/w/c/chrono.