「2012-03-28T08:00:00」のような書式設定された文字列があります。年、月(文字列形式)、日、時、分、秒、日(文字列形式)を取得したい。ブーストでそれを行う最も簡単な方法を誰かが私に提案できますか。
ありがとう
既存の 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;
ファセットを使用せずに;
ptime dateTime = boost::date_time::parse_delimited_time<ptime>(string, 'T');
2 つのfrom*_string
関数には、変換される形式に制限があります。
time_from_string(s)
。from_iso_string(s)
。ブーストでの ISO 8601 日付/時刻のラウンドトリップ。
std::string date = to_iso_extended_string(dateTime);