GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Holen Sie sich Sekunden seit der Epoche in Linux

In C.

time(NULL);

In C++.

std::time(0);

Und der Rückgabewert von time ist:time_t nicht lang lang


Die native Linux-Funktion zum Abrufen der Zeit ist gettimeofday() [es gibt auch einige andere Varianten], aber das bringt Ihnen die Zeit in Sekunden und Nanosekunden, was mehr ist, als Sie brauchen, also würde ich vorschlagen, dass Sie weiterhin time() verwenden . [Natürlich, time() wird durch den Aufruf von gettimeofday() implementiert irgendwo auf der ganzen Linie - aber ich sehe keinen Vorteil darin, zwei verschiedene Codeteile zu haben, die genau dasselbe tun - und wenn Sie das wollten, würden Sie GetSystemTime() verwenden oder so etwas unter Windows [nicht sicher, ob das der richtige Name ist, es ist schon eine Weile her, seit ich unter Windows programmiert habe]


Sie verwenden es bereits:std::time(0) (Vergessen Sie nicht #include <ctime> ). Ob jedoch std::time gibt tatsächlich die Zeit zurück, seit Epoche nicht im Standard angegeben ist (C11, referenziert durch den C++-Standard):

7.27.2.4 Die time Funktion

Zusammenfassung

#include <time.h>
time_t time(time_t *timer);

Beschreibung

Die Zeitfunktion ermittelt die aktuelle Kalenderzeit. Die Codierung des Werts ist nicht angegeben. [Hervorhebung von mir]

Geben Sie für C++, C++11 und höher time_since_epoch an . Allerdings vor C++20 die Epoche von std::chrono::system_clock war in früheren Standards nicht spezifiziert und daher möglicherweise nicht portierbar.

Unter Linux jedoch die std::chrono::system_clock verwendet normalerweise Unix Time sogar in C++11, C++14 und C++17, daher können Sie den folgenden Code verwenden:

#include <chrono>

// make the decltype slightly easier to the eye
using seconds_t = std::chrono::seconds;

// return the same type as seconds.count() below does.
// note: C++14 makes this a lot easier.
decltype(seconds_t().count()) get_seconds_since_epoch()
{
    // get the current time
    const auto now     = std::chrono::system_clock::now();

    // transform the time into a duration since the epoch
    const auto epoch   = now.time_since_epoch();

    // cast the duration into seconds
    const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(epoch);
    
    // return the number of seconds
    return seconds.count();
}

Linux
  1. Linux schneller booten

  2. Alter der gegebenen Datei abrufen?

  3. Linux – Warum verwenden Linux-Dienstprogramme keinen Systemaufruf, um die aktuelle Uhrzeit abzurufen?

  4. Holen Sie sich die aktuelle Zeit in Sekunden seit der Epoche auf Linux, Bash

  5. So erhalten Sie die UTC-Zeit

So testen Sie die Ladegeschwindigkeit von Websites im Linux-Terminal

Linux-Zeitbefehl

Erhalten Sie CPU-Informationen unter Linux

Letzter Befehl in Linux

Überprüfen Sie die Zeitzone in Linux

So erhalten Sie Ihre IP-Adresse unter Linux