pedir - ¿Hay una clase estándar de fecha/hora en C++?
manual completo de c++ pdf (6)
¿C ++ stl tiene una clase de tiempo estándar? O tengo que convertir a c-string antes de escribir en una secuencia. Ejemplo, quiero generar la fecha / hora actual en un flujo de cadena:
time_t tm(); ostringstream sout; sout << tm << ends;
En este caso, la fecha / hora actual se escribe como un número sin ningún formato. Puedo usar c- runtime function strftime
para formatear tm primero, pero parece que no debería ser necesario si el stl tiene una clase de tiempo que puede ser instanciada desde time_t value
C ++ ahora tiene las bibliotecas crono para la fecha y la hora. Esto está documentado en http://en.cppreference.com/w/cpp/chrono y http://www.cplusplus.com/reference/chrono/
DE ACUERDO. Aquí está el más cercano que he encontrado sobre la hora de escribir directamente en una secuencia:
time_t t(time(NULL)); // current time
tm tm(*localtime(&t));
std::locale loc(""); // current user locale
ostringstream sout;
const std::time_put<TCHAR> &tput =
std::use_facet<std::time_put<TCHAR> >(loc);
tput.put(sout.rdbuf(), sout, _T(''/0''), &tm, _T(''x''));
sout << ends;
CString sTest(sout.str().c_str());
Una guía muy útil es la Guía de referencia de la biblioteca estándar de Apache C ++ http://stdcxx.apache.org/doc/stdlibref/time-put.html#sec13
Nitpicking: la STL es la biblioteca de plantillas estándar que se ocupa de contenedores y algoritmos genéricos, etc. y es poco probable que incorpore clases para el manejo y el cálculo de fechas, incluso en el futuro ...
La biblioteca estándar de C ++ incluye la STL y una versión anterior de la biblioteca estándar de C. El último ofrece algunas funciones relacionadas con la fecha y la hora a través de #include <ctime>
que ya se ha mencionado anteriormente.
Si ajustar (o simplemente usar) estas funciones es suficiente (y más rápido) que empujar el impulso , vaya con estas. No hay nada malo con ellos.
No es parte de STL pero la biblioteca conocida es un impulso.
Yo seguiría el camino de usar boost::date
. Aquí hay algunos ejemplos: http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/date_time_io.html#date_time.io_tutorial .
Si aún no probaste el impulso, te animo a que lo hagas, ya que te ahorra muchos problemas desagradables, ya que enmascara la mayoría de las cosas que dependen del sistema operativo, como los hilos, por ejemplo. Muchas cosas en boost
son solo encabezado (bibliotecas de plantillas). Sin embargo, datetime requiere un lib o dll.
También hay un método ctime (& time_t) que genera la cadena (char *).