問題タブ [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++ - 現在のUTCオフセット(タイムゾーン)を取得するにはどうすればよいですか?
現在のUTCオフセットを取得するにはどうすればよいですか(タイムゾーンの場合と同様ですが、現在の瞬間のUTCオフセットのみ)。
「+02:00」のような答えが必要です。
c++ - dynamic_castのパフォーマンス?
質問を読む前に:
この質問は、を使用することがどれほど役立つかについてではありませんdynamic_cast
。そのちょうどそのパフォーマンスについて。
最近dynamic_cast
、よく使われるデザインを開発しました。
同僚と話し合うと、ほとんどの人がdynamic_cast
パフォーマンスが悪いので使用すべきではないと言います(これらは異なるバックグラウンドを持ち、場合によってはお互いを知らない同僚です。私は巨大な会社で働いています)
私は、単に信じるのではなく、このメソッドのパフォーマンスをテストすることにしました。
次のコードが使用されました。
上記のコードはboost::date_time
、Linux上のメソッドを使用して、使用可能な値を取得します。
1回の実行で3dynamic_cast
回実行しましたが、それらを測定するためのコードは同じです。
1回の実行の結果は次のとおりです
。Cast1の持続時間:74マイクロ秒
Cast2の持続時間:2マイクロ秒
Cast3の持続時間:1マイクロ秒
最初のキャストは常に74〜111マイクロ秒かかり、同じ実行での次のキャストは1〜3マイクロ秒かかりました。
それで最後に私の質問:
本当にdynamic_cast
パフォーマンスが悪いのですか?
テスト結果によると、そうではありません。私のテストコードは正しいですか?
なぜそんなに多くの開発者がそうでなければ遅いと思うのですか?
c++ - Boost Date Time Library と Visual Studio 2008 を使用するとランタイム チェックが失敗する
私はコンピュータ サイエンスの 1 年生で、ランダムに割り当てられた float の配列をバブル ソートし、バイナリ チョップ検索を使用して配列の最後の要素の値を見つける C++ プログラムを作成しています (コードのタイミングを合わせる際の一貫性のため)。
バブル ソートとバイナリ チョップ検索の実行時間を計りたいのですが、C++ 標準時間ライブラリでは 2 番目のレベルの精度しか得られず、このコードはほとんどの場合 1 秒未満で実行されるため使用できません。
Boost を見つけました。Boost DateTime ライブラリのマイクロ秒クロックを使用して、コード実行のサブ秒精度のタイミングを取得する方法としてそれを使用しようとしています。私が使用しているコードはhttp://pastebin.com/U8D0s2hbにあります。このコードを実行すると、Visual Studio 2008 から次のエラーが発生します。
実行時チェックの失敗 #0 - ESP の値が関数呼び出しで適切に保存されませんでした。これは通常、ある呼び出し規約で宣言された関数を、別の呼び出し規約で宣言された関数ポインターで呼び出した結果です。
犯人は時間を ptime オブジェクトとして取得しているように見えますが、これまでランタイム チェックの失敗エラーを見たことがないため、その理由はわかりません。
助けていただければ幸いです。
c++ - boost::posix_time::ptime を time_t に変換するにはどうすればよいですか?
「標準的な」方法はありますか、または私ができる最善の方法は、から減算して直接計算することgregorian::date(1970,1,1)
ですか?
c++ - timed_waitへのタイムアウトとしてpos_infinを渡すと、年が有効な範囲外になります
次のコードはエラーを再現します。
私のシステムでは、Visual Studio2005とBoost1.43を使用すると、次の出力が生成されます。
条件変数が永遠に通知されるのを待って、デッドロックすることを期待します。timed_wait
これはどこにも文書化されていないようです。また、有効なを受け入れることを期待していますptime
。私は何か間違ったことをしていますか?これはバグですか、それとも無限のタイムアウトは意図されていませんか?
c++ - 単純なプログラムをコンパイルする Boost Date_Time 問題
Boost Date_Time ライブラリを使用して非常にばかげたプログラムを書いています。
コンパイルできません、コンパイラはタイプを認識しません...シリアル化などのBoostライブラリの多くの機能を使用しました...それらを正しくビルドし、/usr/local/libフォルダを見ると、 libboost_date_time.so があります (そのライブラリをビルドできたことを意味する良い兆候です)
コンパイルすると、次のように記述します。
g++ -lboost_date_time main.cpp
しかし、ライブラリを指定したときに表示されたエラーは、ライブラリを指定していないエラーと同じです。
これは何ですか?誰でも知っていますか?
エラーは
main.cpp: 関数 'int main(int, char**)': main.cpp:9: エラー: 'date' はこのスコープで宣言されていません main.cpp:9: エラー: 期待される ';' 'd' の前 main.cpp:10: エラー: 'd' はこのスコープで宣言されていません main.cpp:10: エラー: 'nanosec' はこのスコープで宣言されていません main.cpp:13: エラー: 期待される ';' 「今日」より前</p>
c++ - 指定された日付の ( local_timezone ) 午前 0 時に対応する time_t / timeval を取得します
time_t または struct timeval が与えられた場合、その日の真夜中の EST/EDT (ローカル タイムゾーン) の timeval または time_t を取得するにはどうすればよいですか? ローカル タイムゾーンが EST/EDT であると仮定すると、たとえば 2010-11-30 08:00:00 EST/EDT に対応する time_t が与えられると、予想される答えは 2010-11-30 00:00:00 EST に対応する time_t になります。 /EDT
試行 1 (不正解: DST を処理せず、EST/EDT が常に UTC から 5 時間遅れていると想定しているため):
試行 2 (不正解: EST/EDT ではなく UTC の午前 0 時、ローカル タイムゾーンに対応する time_t を返すため):
(i) struct tm、mktime、または (ii) boost::local_date_time を含む解決策があるはずだと思います。
boost-date-time - boost::posix_time がリリース ビルドで失敗する
プログラムが実行されるたびに新しいログ ファイルを開きたいので、現在の時刻でファイル名を作成します。
これはデバッグビルドで完全に機能し、次のような名前のファイルを生成します
ただし、リリースビルドでは同じコードが奇妙に失敗します
ところで、これも同じように失敗します。
これは機能します:
前の 2 つのバージョンがリリース ビルドでは失敗するのに、デバッグでは機能する理由が今でも気になります。
c++ - ロケールでのファセットの所有権/削除 (std::locale)
boost.date_timeを使用して日付/時刻文字列を取得する次の関数を作成しました。
オブジェクトdelete
の所有権/所有権について簡単な質問がありました。std::locale のコンストラクターは、の所有権/ 'ing について明示的ではありません。-wrapped バージョンとスタック割り当てバージョンの両方を使用してみましたが、どちらもセグ フォールトを引き起こしました。また、valgrind を介して上記の関数を実行してもリークは見られませんでしたが (これはおそらく、ロケールまたはストリームが'ing を処理していることを意味します)、ここで正しいことを行っていることを明確にしたかっただけです。ありがとう。facet
delete
facet
shared_ptr
facet
delete
c++ - YYYY-MM-DD-HH-MM-SS文字列として現在の時刻を取得する
現在の時刻を「YYYY-MM-DD-HH-MM-SS」形式の文字列としてエレガントに取得しようとしています。Boostの「DateTime」ライブラリからISO形式で現在の時刻を取得できますが、他の区切り文字列があり、機能しません(これをファイル名で使用しています)。もちろん、区切り文字列を置き換えることもできますが、日時の書式設定オプションを使用してこれを行うためのより良い方法があると感じています。そのような方法はありますか?もしそうなら、どうすればそれを使用できますか?