Benutzer-Werkzeuge

Webseiten-Werkzeuge


edv:prg:c:example:aktuellen_timestamp_erfassen

Aktuellen Timestamp erfassen

Als Beispiel eine Funktion, die die aktuelle Zeit erfaßt und über Parameter formatiert zurück gibt:

void getCurrentDateAndTime (char *currentDate, const char *formatDate, char *currentTime, const char *formatTime)
{
	// ----- Achtung! Mehrere returns innerhalb der Funktion ------------------------------
 
	time_t aktSekunden;
	struct tm *aktZeit;
 
	if (!currentDate) return;
	if (!formatDate)  return;
	if (!currentTime) return;
	if (!formatTime)  return;
 
	time(&aktSekunden); // aktuelle Zeit ermitteln
 
	aktZeit = localtime(&aktSekunden); // auf Komponenten zerlegen
 
	sprintf(currentTime, formatTime, aktZeit->tm_hour,        aktZeit->tm_min,     aktZeit->tm_sec);  // Uhrzeit
	sprintf(currentDate, formatDate, aktZeit->tm_year + 1900, aktZeit->tm_mon + 1, aktZeit->tm_mday); // Datum
} // getCurrentDateAndTime()

:!: Alternativ kann die Formatierung des Strings mit Hilfe der Funktion strftime() (aus time.h) erfolgen. (Es ist wahrscheinlich sogar etwas eleganter. Das Beispiel oben dient eher dazu, den Umgang mit der Funktion time() zu erläutern.)

:!: Hier sind weitere Infos zu den Zeit-Funktionen zu finden.

Die o.g. Funktion kann z.B. in einer Logging-Funktion genutzt werden um jede trace-Zeile mit dem Timestamp versehen:

void logIt (char *functName, char *text)
{
	char strZeit  [16];
	char strDatum [16];
 
	memset(strZeit,  '\0', sizeof(strZeit));
	memset(strDatum, '\0', sizeof(strDatum));
 
	getCurrentDateAndTime(strDatum, "%04d-%02d-%02d", strZeit, "%02d:%02d:%02d");
 
	fprintf(stdout, "%s/%s %s(): %s\n", strDatum, strZeit, functName ? functName : "NONAME(NULL-POINTER)", text ? text : "NOTEXT(NULL-POINTER)");
	fflush(stdout);
} // logIt()

Die Erfassung des Timestamps kann dazu verwendet werden, um die Laufzeit eines Programms oder einer Funktion zu messen. Man ruft die Funktion time() vor dem und nach dem zu messenden Abschnitt auf. Ein Beispiel dafür ist unter Zeitabstände messen zu finden.


Stand: 05.07.2016
: Jürgen Kreick

EOF

edv/prg/c/example/aktuellen_timestamp_erfassen.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki