Si hago date +%H-%M-%S
en la línea de comando (Debian/Lenny), obtengo un tiempo fácil de usar (no UTC, no DST-less, el tiempo que una persona normal tiene en su reloj de pulsera).¿La forma más simple de obtener la hora actual en la zona horaria actual usando boost :: date_time?
¿Cuál es la forma más sencilla de obtener lo mismo con boost::date_time
?
Si hago esto:
std::ostringstream msg;
boost::local_time::local_date_time t =
boost::local_time::local_sec_clock::local_time(
boost::local_time::time_zone_ptr()
);
boost::local_time::local_time_facet* lf(
new boost::local_time::local_time_facet("%H-%M-%S")
);
msg.imbue(std::locale(msg.getloc(),lf));
msg << t;
Entonces msg.str()
es una hora antes de la hora que quiero ver. No estoy seguro de si esto se debe a que muestra el horario UTC o la zona horaria local sin una corrección DST (estoy en el Reino Unido).
¿Cuál es la forma más sencilla de modificar lo anterior para obtener el tiempo horario local corregido de DST? Tengo una idea de que implica boost::date_time:: c_local_adjustor
pero no puedo entenderlo a partir de los ejemplos.
Creo que este es un duplicado de http://stackoverflow.com/questions/2492775/get-local-time-with-boost/2493977. Versión corta: use 'boost :: posix_time' para construir un objeto de hora a partir del reloj del sistema. Esto funciona muy bien para la hora local (la configuración regional 'C'). Si puede construir tiempos para otras zonas horarias depende de las configuraciones regionales que tenga disponibles. – Nate
Gracias por el puntero; El problema fundamental es que realmente no había apreciado la diferencia entre local_time/posix_time. – timday