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.
Windows usa unidades de tiempo y época diferentes: vea Convertir tiempo de archivo de Windows a segundo en Unix / Linux
Lo que std :: time () devuelve en Windows es (hasta ahora) desconocido para mí (;-))
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;
}