Se eseguo il comando date +%H-%M-%S
sulla riga di comando (Debian/Lenny), viene stampato un tempo di utilizzo (non UTC, non DST-less, la volta in cui una persona normale ha il proprio orologio da polso).Il modo più semplice per ottenere l'ora corrente nel fuso orario corrente usando boost :: date_time?
Qual è il modo più semplice per ottenere la stessa cosa con boost::date_time
?
Se faccio questo:
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;
Poi msg.str()
è un'ora prima rispetto al tempo che voglio vedere. Non sono sicuro se questo è dovuto al fatto che sta visualizzando l'ora UTC o il fuso orario locale senza una correzione dell'ora legale (sono nel Regno Unito).
Qual è il modo più semplice per modificare quanto sopra per ottenere il fuso orario locale dell'ora legale corretto? Ho un'idea che riguarda lo boost::date_time:: c_local_adjustor
ma non riesco a capirlo dagli esempi.
Credo che questo sia un duplicato di http://stackoverflow.com/questions/2492775/get-local-time-with-boost/2493977. Versione breve: usa 'boost :: posix_time' per costruire un oggetto orario dall'orologio di sistema. Questo funziona alla grande per l'ora locale (il locale 'C'). Se puoi costruire tempi per altri fusi orari dipende da quali locali hai a disposizione. – Nate
Grazie per il puntatore; il problema fondamentale è che non avevo davvero apprezzato la differenza tra local_time/posix_time. – timday