Boostの日付時間ライブラリを使用してカスタム形式で日付/時刻文字列を解析しようとしています。私が使用しようとしている形式は、Posixのタイムゾーンの記述文字列を含んでいるので珍しいです。ライブラリのdocsには、Posixタイムゾーン文字列を処理する入力と出力の両方に使用できるフラグ(%ZP
)があります。私が解析しようとしているのはWebブラウザからのもので、ゾーン文字列で指定された変換を実行するためにJSを記述し、UTCでサーバーに送信するのではなく、サーバー側で行うブーストはこれを本当に簡単に行うべきです)。明らかに私が働いていれば、私はここに投稿していないでしょう。このコードは、 "ソースタイプの値をターゲットとして解釈できませんでした"の値を持つboost::bad_lexical_cast
をスローします。あなたは"%Y-%m-%dT%H:%M:%S%F;"
でフォーマット文字列を置換する場合タイムゾーン文字列を含むBoost datetimeライブラリを使用した解析エラー
using namespace boost::posix_time;
using namespace boost::local_time;
using namespace boost::gregorian;
std::istringstream ss("1989-11-09T15:30:42.005;PST-8PDT,M3.2.0,M11.1.0");
ss.exceptions(std::ios_base::failbit);
local_time_input_facet* facet = new local_time_input_facet("%Y-%m-%dT%H:%M:%S%F;%ZP");
ss.imbue(std::locale(ss.getloc(), facet));
local_date_time ldt(not_a_date_time);
ss >> ldt; // do the parse
std::cout << ldt.to_string();
はしかし、パースは(もちろん、それは間違ったタイムゾーンの値を出力)うまく成功します。
私が間違っていることを知っていますか? %ZP
フラグのドキュメントには例がないので、どのように使用されるべきかわかりません。
これはうまくいきましたか? – Nim