Si vous avez une chaîne de date/heure, vous pouvez convertir en un objet ptime comme ceci:
using boost::posix_time;
ptime t = time_from_string(datetimeString);
Avoir ce que vous pouvez facilement mettre la main sur la TIME_DURATION qui contient les fractions de seconde.
time_duration td = t.time_of_day();
long fs = td.fractional_seconds();
Vous pouvez également obtenir les millisecondes totales ou microsecondes comme ceci:
long ms = td.total_milliseconds();
long us = td.total_microseconds();
Plus d'informations sur ce qui peut être fait dans le documentation.
MISE À JOUR
Si le format d'entrée peut être un autre, de sorte que vous voulez utiliser le time_input_facet
vous pouvez vérifier le format approprié pour time_facet.hpp
. Voici ce que vous voulez sans doute choisir parmi:
static const char_type fractional_seconds_format[3]; // f
static const char_type fractional_seconds_or_none_format[3]; // F
static const char_type seconds_with_fractional_seconds_format[3]; // s
MAJ2
En time_facet.hpp
(Boost 1,45) Je vois ce qui suit lors de l'analyse:
case 'f':
{
// check for decimal, check special_values if missing
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
...
Je ne vois pas pourquoi cela nécessiterait tout sauf un point entre les secondes et les secondes fractionnaires. Peut-être que vous utilisez une autre version de Boost?
* milli * secondes devraient être * micro * secondes – ymett
quel est l'objectif? juste pour obtenir les millisecondes/microsecondes d'une chaîne dans le format ci-dessus ou autre chose? – murrekatt
Le but est d'avoir les informations ms/us pour que je puisse trier les informations en fonction de leur horodatage et ensuite les afficher plus précisément. – Arthur