4

boost::posix_time::time_input_facetミリ秒を解析できる を探しています。マイクロ秒をフォーマットするためのものと同じではないようです"%f"

もし私が持っているなら2011-12-11 08:29:53.123000、私はそれを解析するための正しいフォーマットを持ちたいと思い"%Y-%m-%d %H:%M:%S"ます。

4

1 に答える 1

3

日付/時刻の文字列がある場合は、次のようにptimeオブジェクトに変換できます。

using boost::posix_time;
ptime t = time_from_string(datetimeString);

これを使用すると、小数秒を保持するtime_durationを簡単に取得できます。

time_duration td = t.time_of_day();
long fs = td.fractional_seconds();

次のように、合計ミリ秒またはマイクロ秒を取得することもできます。

long ms = td.total_milliseconds();
long us = td.total_microseconds();

ドキュメントで何ができるかについての詳細情報。

アップデート

入力形式が異なる可能性があるため、を使用する場合は、適切な形式time_input_facetを確認できます。time_facet.hppおそらく選択したいものは次のとおりです。

  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

UPDATE2

time_facet.hpp(Boost 1.45)では、解析時に次のように表示されます。

case 'f':
{
    // check for decimal, check special_values if missing                                                                                                                                       
    if(*sitr == '.') {
        ++sitr;
        parse_frac_type(sitr, stream_end, frac);
        ...

なぜこれが秒と小数秒の間にドット以外のものを必要とするのかわかりません。たぶんあなたはブーストの別のバージョンを使用していますか?

于 2011-08-08T09:41:46.020 に答える