traducir raw numero hora fecha convertir conversor calcular c++ timestamp

c++ - raw - Cómo obtener la marca de tiempo actual en milisegundos desde 1970, de la misma forma en que se hace Java



raw unix timestamp (5)

Esta respuesta es bastante similar a la de Oz.''s , Usando <chrono> para C ++, no la tomé de Oz. aunque...

Recogí el fragmento original al final de esta página y lo modifiqué ligeramente para que fuera una aplicación de consola completa. Me encanta usar esta pequeña cosa. Es fantástico si hace un montón de scripts y necesita una herramienta confiable en Windows para obtener la época en milisegundos reales sin recurrir al uso de VB, o algún código menos moderno y menos amigable para el lector.

#include <chrono> #include <iostream> int main() { __int64 now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); std::cout << now << std::endl; return 0; }

En Java, podemos usar System.currentTimeMillis() para obtener la marca de tiempo actual en milisegundos desde el momento de la época, que es:

la diferencia, medida en milisegundos, entre la hora actual y la medianoche del 1 de enero de 1970 UTC.

En C ++, ¿cómo obtener lo mismo?

Actualmente estoy usando esto para obtener la marca de tiempo actual -

struct timeval tp; gettimeofday(&tp, NULL); long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds cout << ms << endl;

Esto se ve bien o no?


Incluye <ctime> y usa la función de time .


Si tiene acceso a las bibliotecas C ++ 11, consulte la biblioteca std::chrono . Puede usarlo para obtener los milisegundos desde el Unix Epoch como este:

#include <chrono> // ... using namespace std::chrono; milliseconds ms = duration_cast< milliseconds >( system_clock::now().time_since_epoch() );


Si usa gettimeofday, tiene que lanzar a long long, de lo contrario obtendrá desbordamientos y, por lo tanto, no el número real de milisegundos desde la época: long int msint = tp.tv_sec * 1000 + tp.tv_usec / 1000; le dará un número como 767990892 que es redondo 8 días después de la época ;-).

int main(int argc, char* argv[]) { struct timeval tp; gettimeofday(&tp, NULL); long long mslong = (long long) tp.tv_sec * 1000L + tp.tv_usec / 1000; //get current timestamp in milliseconds std::cout << mslong << std::endl; }


use <sys/time.h>

struct timeval tp; gettimeofday(&tp, NULL); long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;

referir this