UNIX-Programmierung Zeitfunktionen |
#include <time.h> time_t time(time_t *t); |
Als Parameter kann man einfach 0 geben. Da die wenigsten Menschen die Zahl der Sekunden seit dem 1.1.1970 einordnen können, gibt es hilfreiche Umrechnungsfunktionen.
#include <time.h> struct tm *localtime(const time_t *timer); |
struct tm { int tm_sec; /* seconds after the minute - [0,61] */ int tm_min; /* minutes after the hour - [0,59] */ int tm_hour; /* hours - [0,23] */ int tm_mday; /* day of month - [1,31] */ int tm_mon; /* month of year - [0,11] */ int tm_year; /* years since 1900 */ int tm_wday; /* days since Sunday - [0,6] */ int tm_yday; /* days since January 1 - [0,365] */ int tm_isdst; /* daylight savings time flag */ } |
Um in Protokolldateien einen Zeitstempel zu hinterlassen, gibt es die recht praktische Funktion asctime(). Sie liefert aus der Struktur tm eine Zeichenkette, leider im amerikanischen Format. Die Zeichenkette ist immer 26 Byte lang und endet mit einem Zeilenvorschubzeichen und einer Abschluss Null.
#include <time.h> char * asctime(const struct tm *t); |
Die Funktion gettimeofday() ist hilfreich, wenn man eine genauere Zeit als in Sekunden braucht. Sie liefert in seiner Struktur timeval auch Mikrosekunden. Wie exakt diese Messung tatsächlich ist, hängt allerdings von der Hardware ab.
#include <sys/time.h> int gettimeofday(struct timeval *tp, void *tzp); |
struct timeval { unsigned long tv_sec; /* seconds since Jan. 1, 1970 */ long tv_usec; /* and microseconds */ }; struct timezone { int tz_minuteswest; /* of UTC */ int tz_dsttime; /* type of DST correction to apply */ }; |
#include <time.h> clock_t clock(void); |
Die Funktion difftime() ermittelt die Differenz zwischen zwei Zeitpunkten in Sekunden.
#include <time.h> double difftime(time_t time1, time_t time0); |
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
Homepage |
(C) Copyright 2002 Arnold Willemer
|