¿Cómo obtener la hora y fecha actuales en C++?
¿Existe una forma multiplataforma de obtener la fecha y hora actuales en C++?
Desde C++ 11 puedes usarstd::chrono::system_clock::now()
Ejemplo (copiado de en.cppreference.com ):
#include <iostream>
#include <chrono>
#include <ctime>
int main()
{
auto start = std::chrono::system_clock::now();
// Some computation here
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s"
<< std::endl;
}
Esto debería imprimir algo como esto:
finished computation at Mon Oct 2 00:59:08 2017
elapsed time: 1.88232s
C++ comparte sus funciones de fecha/hora con C. La estructura tm es probablemente la más fácil de usar para un programador de C++: lo siguiente imprime la fecha de hoy:
#include <ctime>
#include <iostream>
int main() {
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
std::cout << (now->tm_year + 1900) << '-'
<< (now->tm_mon + 1) << '-'
<< now->tm_mday
<< "\n";
}
Puede probar el siguiente código multiplataforma para obtener la fecha/hora actual:
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>
// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
const std::string currentDateTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
// Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
// for more information about date/time format
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
int main() {
std::cout << "currentDateTime()=" << currentDateTime() << std::endl;
getchar(); // wait for keyboard input
}
Producción:
currentDateTime()=2012-05-06.21:47:59
Visite aquí para obtener más información sobre el formato de fecha/hora.
Las bibliotecas std C proporcionan time()
. Esto es segundos de la época y se puede convertir a la fecha H:M:S
usando funciones estándar de C. Boost también tiene una biblioteca de fecha y hora que puedes consultar.
time_t timev;
time(&timev);