Was ist die beste Methode, um die Zeit in C im Format auszudrucken 2009‐08‐10
18:17:54.811
?
95
Verwenden Sie strftime () .
#include <stdio.h>
#include <time.h>
int main()
{
time_t timer;
char buffer[26];
struct tm* tm_info;
timer = time(NULL);
tm_info = localtime(&timer);
strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
puts(buffer);
return 0;
}
Schauen Sie sich diese Frage für Millisekunden an. Wie messe ich die Zeit in Millisekunden mit ANSI C?
time(&timer)
eher seintimer = time(NULL);
, zumindest für Linux.The tloc argument is obsolescent and should always be NULL in new code. When tloc is NULL, the call cannot fail.
Die obigen Antworten beantworten die Frage nicht vollständig (insbesondere den Millisekunden-Teil). Meine Lösung hierfür ist, gettimeofday vor strftime zu verwenden. Beachten Sie die Vorsicht, um zu vermeiden, dass Millisekunden auf "1000" gerundet werden. Dies basiert auf der Antwort von Hamid Nazari.
quelle
gettimeofday
ist bei Windows-Implementierungen nicht verfügbartime.h
definiert einestrftime
Funktion, die Ihnen eine Textdarstellung einertime_t
Verwendung von etwas geben kann wie:Aber das gibt Ihnen keine Auflösung von weniger als einer Sekunde, da diese nicht von a erhältlich ist
time_t
. Es gibt aus:Wenn Sie durch die Spezifikationen wirklich eingeschränkt sind und den Abstand zwischen Tag und Stunde nicht möchten, entfernen Sie ihn einfach aus der Formatzeichenfolge.
quelle
Der folgende Code wird mit Mikrosekundengenauigkeit gedruckt. Alles, was wir tun müssen, ist , den erstellten String zu verwenden
gettimeofday
undstrftime
an ihntv_sec
anzuhängentv_usec
.quelle
Sie könnten verwenden
strftime
, haben aberstruct tm
keine Auflösung für Teile von Sekunden. Ich bin mir nicht sicher, ob dies für Ihre Zwecke unbedingt erforderlich ist.quelle
Trick:
quelle
Keine der Lösungen auf dieser Seite hat für mich funktioniert. Ich habe sie verwechselt und mit Windows und Visual Studio 2019 kompatibel gemacht.
Ergebnis:
quelle