7

「2012-03-28T08:00:00」のような書式設定された文字列があります。年、月(文字列形式)、日、時、分、秒、日(文字列形式)を取得したい。ブーストでそれを行う最も簡単な方法を誰かが私に提案できますか。

ありがとう

4

2 に答える 2

11

既存の from_string() メソッドがニーズに合わない場合は、時間入力ファセットを使用して、文字列を解析するフォーマットをカスタマイズできます。

あなたの場合、ISO 拡張フォーマット文字列を使用できるため、次のコードを使用して文字列を解析できます。

    boost::posix_time::time_input_facet *tif = new boost::posix_time::time_input_facet;
    tif->set_iso_extended_format();
    std::istringstream iss("2012-03-28T08:00:00");
    iss.imbue(std::locale(std::locale::classic(), tif));
    iss >> abs_time;
    std::cout << abs_time << std::endl;
于 2012-05-08T08:39:33.100 に答える
9

ファセットを使用せずに;

ptime dateTime = boost::date_time::parse_delimited_time<ptime>(string, 'T');

2 つのfrom*_string関数には、変換される形式に制限があります。

  • 'T': を受け入れませんtime_from_string(s)
  • 「-」: は受け入れませんfrom_iso_string(s)

ブーストでの ISO 8601 日付/時刻のラウンドトリップ。

std::string date = to_iso_extended_string(dateTime);

于 2014-01-14T13:29:30.583 に答える