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();
}