So verwenden Sie GetTimeofday -Funktion in der C -Sprache?

So verwenden Sie GetTimeofday -Funktion in der C -Sprache?
Der GetTimeofday () Funktion erhält die Uhrzeit des Systems. Die aktuelle Zeit wird seit 00:00:00, 1. Januar 1970 (Unix Epoche) in verstrichenen Sekunden und Mikrosekunden ausgedrückt (Unix Epoche). In diesem Artikel zeigen wir Ihnen, wie man die benutzt GetTimeofday () Funktion in Linux. Also lasst uns anfangen.

Syntax

Int GetTimeOfday (Struct Timeval *TP, Struct TimeZone *TZ)

Der GetTimeofday () Funktion ist in definiert in sys/Zeit.H Header-Datei.

Argumente

Diese Funktion enthält zwei Argumente:

Die 1st Argumentation auf die Zeitval Struktur. Der Zeitval Die Struktur wird wie nachstehend in in deklariert sys/Zeit.H Header-Datei :

struct timeval
TIME_T TV_SEC; // für Sekunden verwendet
SUSECONDS_T TV_USEC; // für Mikrosekunden verwendet

Die Struct Timeval -Struktur repräsentiert eine Kalenderzeit. Es hat zwei Mitglieder:

  • TV_SEC : Es ist die Anzahl der Sekunden seit der Epoche.
  • TV_USEC : Es sind zusätzliche Mikrosekunden nach Anzahl der Sekunden Berechnung seit der Epoche…

Die 2nd Argumentation auf die Zeitzone Struktur. Es sollte normalerweise auf null gesetzt werden, weil Struct Timezone ist obsolet. Dieses Argument dient nur zur Rückwärtskompatibilität.

Rückgabewerte

Auf Erfolg die GetTimeofday () Rückgabe 0, für den Fehler gibt die Funktion -1 zurück.

Einfacher Zeit und Druck bekommen

#enthalten
#enthalten
int main ()
struct timeval current_time;
GetTimeOfday (& current_time, null);
printf ("Sekunden: %ld \ nmicro Sekunden: %ld",
aktuelle Uhrzeit.TV_SEC, Current_Time.TV_USEC);
Rückkehr 0;

Ausgang:

Hier, sys/Zeit.H wurde aufgenommen für GetTimeofday () Funktion und Zeitvalstruktur. Der GetTimeofday () Funktion Setzen Sie die Zeit in TimeVal (Current_Time) Strukturmitglied. TV_SEC ist die integrale Anzahl von Sekunden, die seit Beginn des Unix -Epoche, Auf Mitternacht UTC am 1. Januar 1970 und TV_USEC ist eine zusätzliche Anzahl von Mikrosekunden, die aus TV_SEC abgebrochen sind. Wenn Sie das Programm ausführen, sollten Sie die Ausgabe sehen. Jedes Mal, wenn Sie das Programm ausführen.

Null -Argument -Fehler

#enthalten
#enthalten
int main ()
struct timeval current_time;
GetTimeofday (NULL, NULL);
Rückkehr 0;

Ausgang:

In diesem Beispiel zeigt dieses erste Argument der GetTimeofday () Funktion sollte nicht null sein. Die Zusammenstellung warnt, wenn das erste Argument null ist.

Beispiel für aktuelle Zeit formatieren

#enthalten
#enthalten
#enthalten
int main ()
Struct Timeval TV;
TIME_T T;
Struktur TM *Info;
Zeichenpuffer [64];
GetTimeofday (& TV, NULL);
T = TV.TV_SEC;
info = localtime (& t);
printf ("%s", asctime (info));
Strftime (Puffer, Sizeof Puffer "ist heute %A, %b %d.\ n ", info);
printf ("%S", Puffer);
Strftime (Puffer, Größe von Puffer ", ist die Zeit %i: %m %p.\ n ", info);
printf ("%S", Puffer);
Rückkehr 0;

Ausgang:

In diesem Beispiel zeigt das Drucken von Datum und Uhrzeit in einem anderen Format. Es ist nicht sehr einfach, Daten aus dem Rückgabewert von zu repräsentieren GetTimeofday () Funktion . Hier, Ortszeit() Und strftime () Funktionen werden verwendet, um den Rückgabewert von gut darzustellen GetTimeofday ().

Der Ortszeit() Funktion nimmt ein Argument ein, das ein Hinweis auf einen Zeiger der ist TV_SEC Bereich Struct Timeval und gibt einen Verweis auf einen Zeiger von a zurück Struktur TM Objekt.

Der strftime () Die Funktion erzeugt eine personalisierte, formatierte Zeichenfolge, die das Datum und die Uhrzeit von der zeigt Struktur TM Zeiger. Formatspezifizierer werden für formatierte Anzeige verwendet. Beispielsweise gibt die Formatzeichenfolge „%d-%M-%y%H:%M:%s“ das Datum und die Uhrzeit in dieser Form an:

14-04-2020 13:09:42

Im Folgenden finden Sie die Konvertierungsspezifizierer, die für formatierte Anzeige verwendet werden können:

Spezifizierer Bedeutung
%A Der abgekürzte Name des Wochentags gemäß dem gegenwärtigen Gebietsschema.
%A Der Name des Wochentags gemäß dem gegenwärtigen Gebietsschema.
%B Name des abgekürzten Monat gemäß dem gegenwärtigen Gebietsschema.
%B Name des vollen Monats nach dem gegenwärtigen Gebietsschema.
%C Die bevorzugte Darstellung von Datum und Uhrzeit für das gegenwärtige Gebietsschema.
%D Als Dezimalzahl für den Monatstag (Bereich 01 - 31).
%H Mit 24 -Stunden (Bereich 00 - 23) bis zur Stunde als Dezimalzahl.
%ICH Mit 12 -Stunden (Bereich 00 - 23) bis zur Stunde als Dezimalzahl.
%J Als Dezimalzahl für den Tag des Jahres (Bereich 001-366).
%M Als Dezimalzahl für den Monat (Bereich 01 - 12).
%M Die Dezimalzahl der Minute.
%P Basierend auf dem angegebenen Zeitwert, entweder 'Am' oder 'PM' oder den äquivalenten Zeichenfolgen für das aktuelle Gebietsschema.
%S Die Dezimalzahl der zweiten.
%X Bevorzugte Darstellung des Datums für das aktuelle Gebietsschema, jedoch ohne Zeit.
%X Bevorzugte Darstellung der Zeit für das aktuelle Gebietsschema, jedoch ohne Datum.
%y Das Jahr ist dezimal, aber kein Jahrhundert (00 bis 99).
%Y Das Jahr ist dezimal, einschließlich Jahrhundert.
%Z Die Zeitzone.

Verwenden von GetTimeofday, um die Programmausführungszeit zu messen

#enthalten
#enthalten
int main ()
struct timeval start, enden;
GetTimeofday (& start, null);
für (int i = 0; i <1e5 ; i++)

GetTimeofday (& Ende, NULL);
printf ("Zeit, die zur Zählung von 10^5 benötigt wird: %ld Micro Sekunden \ n",
((Ende.TV_SEC * 1000000 + Ende.TV_USEC) -
(Start.TV_SEC * 1000000 + START.TV_USEC)));
Rückkehr 0;

Ausgang:

Dieses Beispiel zeigt das wie GetTimeofday () Funktion kann zur Berechnung der Ausführungszeit eines Programms verwendet werden.

Abschluss

Auf diese Weise die GetTimeofday () Funktion kann unter Linux verwendet werden. Zum Portieren vorhandener Code die GetTimeofday () Funktion kann verwendet werden, aber in neuem Code sollte sie nicht verwendet werden. clock_getTime () Funktion kann anstelle von verwendet werden GetTimeofday ().