2010-06-28 24 views
14

come è possibile ottenere l'ora corrente con boost di libreria. Posso fare questo:Ora locale con millisecondi

ptime now = boost::posix_timesecond_clock::local_time(); 
tm d_tm = to_tm(now); 

Ma l'ultima unità di tempo di tm struttura è secondo e ho bisogno di millisecondo. Posso ottenere l'ora corrente con millisecondi?

+0

Ti serve fino a 1 millesimo di precisione? Perché molti computer semplicemente non hanno un orologio così preciso. NTP ti fa solo ~ 10 ms. – MSalters

+1

Inoltre, non aspettarti che funzioni come pensi su Windows. Lo scheduler di Windows funziona solo ogni 15 ms, quindi se lo controlli molto spesso, sembrerà che il tempo si blocchi per 15ms, poi salta in avanti. – teeks99

risposta

18

sguardo boost::posix_time::microsec_clock::local_time()

#include <boost/date_time/posix_time/posix_time_types.hpp> 

#include <iostream> 

int 
main() 
{ 
    boost::posix_time::ptime time = boost::posix_time::microsec_clock::local_time(); 
    boost::posix_time::time_duration duration(time.time_of_day()); 
    std::cout << duration.total_milliseconds() << std::endl; 

    return 0; 
} 
+0

Hm, ok. E qual è la forma giusta per accedere ai dati? – Ockonal

+0

@Ockonal Ho aggiornato il mio esempio per mostrare come estrarre i millisecondi. –

+0

Grande, grazie. – Ockonal

0

Penso che il codice dovrebbe essere:

ptime now = boost::posix_time::second_clock::local_time(); 

Penso che si dimentica la "::" nei codici.^_^

Problemi correlati