問題タブ [boost-date-time]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::gregorian::date_duration 日から月へ、日から年への変換
2 つの boost::gregorian 日付間の時間を計算しようとしています。現在、私は単に2つの日付の差を取り、date_durationを使用して作業しています:
boost::gregorian::days ctor は date_duration を取ることができますが、月と年の date_duration から同様の表現を作成する方法が見つかりません。私が読んで見たところ、date_duration には 2 つの日付間の間隔の日数のみが含まれているようです。私が望んでいたのは、正規化されていないメンバーが何年も、何ヶ月も、何日も続くことでした。たとえば、上記の日付の場合、date_duration にはyears = 5
、months = 65
、 のようなフィールドがありdays = 1992
、各フィールドはその特定の時間粒度を使用した合計時間を表します。現状では、日付間の日数として date_duration にアクセスする方法しかないようです (dd.days()
)。何か不足していますか?boost::gregorian または他の日付/時刻ライブラリのいずれかを使用してこれを達成する方法はありますか?
ありがとう
c++ - ブースト日付オブジェクトから月を取得する
boost::date オブジェクトがあります。オブジェクトで month() インターフェイスを呼び出すと、オブジェクトが保持している月が文字列で返されます。月に関連付けられた番号を取得する方法はありますか? すなわち
ブースト オブジェクトを tm 構造に復元せずにこれを取得する必要があります。これにより、変換が多すぎて、パフォーマンスが低下する可能性があります。
c++ - 文字列 boost::gregorian からの日付
こんにちは、2 つの文字列があります。
この場合は 3 分を返す必要があります。
私の方法は次のようになります。
この時差を取得する方法はありますか?
前もって感謝します!
c++ - グレゴリオ暦の unordered_map
boost::gregorian::date
のキーとして保存したいboost::unordered_map
のですが、このクラスの適切なハッシュ関数がないため、コードをコンパイルできません。
- 簡単な解決策は、変換し
std::string
て保存することです。文字列を使用すると非常にコストがかかるため、このソリューションは避けたいと思います。 - 日付を数値にエクスポートする関数を見つけようとしましたが、関数しか読み取れず、
day()
これが本当に適切かどうかわかりません。 - 私の日付と参照日付の間の日数を計算できますか?
日付または日付を数値としてエクスポートする関数を保存する他のより良い方法はありますか?
c++ - ミリ秒精度で出力のboost::date_time期間をフォーマットする方法は?
ミリ秒の精度でa を出力するための簡潔なソリューションを探していboost::posix_time::time_duration
ます。正確に 3 桁の小数秒が必要です。デフォルトのフォーマットでは、6 桁の小数桁が生成されます (または、すべて 0 の場合は何も生成されません)。
ファセットといくつかの回避策を使用して、必要な出力を得ることができます。しかし、そのソリューションは、必要に応じて構成できない日時ライブラリの部分のみを無効にし、それらを低レベルの実装に置き換えます。
必要な出力を達成するための推奨される方法は何ですか?
c++ - Boost::Spirit で time_period 式を解析する
Boost::Spirit を使用して、次の EBNF 式を解析する必要があります。
たとえば、10.06.2014 10:00:15, 11.07.2014
. 私は文法を 2 つの方法で作成しましたが、正確に動作する例を取得できません。
1) 初挑戦
エラー:
/media/Data/Projects/Qt/Planner/parser.h:108: ошибка: no matching function for call to 'boost::gregorian::date::date(boost::phoenix::detail::make_index_composite<boost::phoenix::actor<boost::spirit::argument<0> >, int>::type)'
等々。またはにキャストできませboost::spirit::argument<0>
ん。とを試しましたが、成功しませんでした (.int
date::years_type
date((int)_1[2]), (int)_1[1], (int)_1[0]))
dynamic_cast<int>(_1[2])
2) 2 回目の試行
エラー:
/media/Data/Projects/Qt/Planner/parser.h:114: ошибка: invalid cast from type 'const _1_type {aka const boost::phoenix::actor<boost::spirit::argument<0> >}' to type 'int'
...
boost::spirit::argument<0> を int にキャストできないのはなぜですか????
c++ - 時刻 std::strings から ptime をブースト
解決のために編集されました。
これは些細な作業のはずですが、時間がかかりすぎて、自分の正気を疑い始めています。
std::string
時間、分、秒、ミリ秒の4 つの s があります。ptime
私はそれらから抜け出したいです。最初は、文字列を数値に変換し (? を使用)、ダミーの日付 (気にしないため)、または今日の日付と一緒にコンストラクターにlexical_cast
プラグインすることを考えました。ptime(date,time_duration)
次に、単一の文字列を作成してそれを ptime に変換するだけで、より効率的で作業が少なくなる可能性があると考えました...しかし、リンクエラーに遭遇しただけでなく、gregorian::date
.
この時点で、私はこれを考えすぎているのではないかと判断しました。しばらくすると、これら 2 つの方法のいずれかが機能するようになる可能性がありますが、もっと簡単な方法をハッキングしているように感じます。私ですか?
編集
これが私がやったことです。私が望んでいたほどエレガントではありませんが、動作することに満足できます。今のところ。