2010-06-28 8 views
14

Comment puis-je obtenir l'heure actuelle avec le boost de la librairie. Je peux le faire:Heure locale avec millisecondes

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

Mais la dernière unité de temps de la structure tm est le deuxième et j'ai besoin en milliseconde. Puis-je connaître l'heure actuelle en millisecondes?

+0

Avez-vous besoin d'une précision de 1 milliseconde? Parce que beaucoup d'ordinateurs n'ont tout simplement pas une horloge aussi précise. NTP vous obtient seulement ~ 10 ms. – MSalters

+1

Aussi, ne vous attendez pas à ce que cela fonctionne comme vous le pensez sur Windows. Le planificateur de Windows ne s'exécute que toutes les 15 ms, donc si vous le vérifiez très souvent, il semblera que le temps se fige pendant 15 ms, puis saute en avant. – teeks99

Répondre

18

regard sur 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, d'accord. Et quel est le bon formulaire pour accéder aux données? – Ockonal

+0

@Ockonal J'ai mis à jour mon exemple pour montrer comment extraire les millisecondes. –

+0

Super, merci. – Ockonal

0

Je pense que le code devrait être:

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

Je pense que vous avez oublié le "::" dans les codes.^_^

Questions connexes