c++ unix timestamp uint

Obtener la marca de tiempo de Unix con C++



timestamp uint (6)

Creé una definición global con más información:

#include <iostream> #include <ctime> #include <iomanip> #define INFO std::cout << std::put_time(std::localtime(&time_now), "%y-%m-%d %OH:%OM:%OS") << " [INFO] " << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") >> " #define ERROR std::cout << std::put_time(std::localtime(&time_now), "%y-%m-%d %OH:%OM:%OS") << " [ERROR] " << __FILE__ << "(" << __FUNCTION__ << ":" << __LINE__ << ") >> " static std::time_t time_now = std::time(nullptr);

Úselo así:

INFO << "Hello world" << std::endl; ERROR << "Goodbye world" << std::endl;

Muestra de salida:

16-06-23 21:33:19 [INFO] src/main.cpp(main:6) >> Hello world 16-06-23 21:33:19 [ERROR] src/main.cpp(main:7) >> Goodbye world

Coloque estas líneas en su archivo de encabezado. Me parece muy útil para la depuración, etc.

¿Cómo obtengo una uint marca de tiempo de Unix en C ++? He buscado en Google un poco y parece que la mayoría de los métodos están buscando formas más complicadas de representar el tiempo. ¿No puedo simplemente entenderlo?


El consejo más común es incorrecto, no puedes simplemente confiar en el time() . Esto se usa para el tiempo relativo: ISO C ++ no especifica que 1970-01-01T00:00Z es time_t(0)

Lo que es peor es que tampoco puedes resolverlo fácilmente. Claro, puedes encontrar la fecha del calendario de time_t(0) con gmtime , pero ¿qué vas a hacer si es 2000-01-01T00:00Z ? ¿Cuántos segundos hubo entre 1970-01-01T00:00Z y 2000-01-01T00:00Z ? Ciertamente no es un múltiplo de 60, debido a los segundos intercalares.



time() es la función más simple: segundos desde Epoch. Página de manual de Linux here .

La página cppreference vinculada anteriormente da este time() :

#include <ctime> #include <iostream> int main() { std::time_t result = std::time(nullptr); std::cout << std::asctime(std::localtime(&result)) << result << " seconds since the Epoch/n"; }


#include <iostream> #include <sys/time.h> using namespace std; int main () { unsigned long int sec= time(NULL); cout<<sec<<endl; }


#include<iostream> #include<ctime> int main() { std::time_t t = std::time(0); // t is an integer type std::cout << t << " seconds since 01-Jan-1970/n"; return 0; }