私はおそらく30回/秒のこの関数を呼び出すたびに、floatでunixタイムスタンプをミリ秒まで取得しようとしています。以下の関数が返すタイムスタンプは常に同じですが、std::cerr
に出力すると異なる値が得られます。関数を呼び出すたびに変数を作成しているので、ここで間違っていることがわかりません。どんな助けもありがとう。提案 1として、私はC++ 11を使用し、Windowsのx64、x86およびLinuxの(主にUbuntuとCentOSの)の両方でこれをコンパイルする必要があるのです:結果の呼び出しでタイムスタンプと同じ値を取得する
float GetUnixTimestamps()
{
float milliseconds_since_epoch =
std::chrono::duration_cast<std::chrono::milliseconds>
(std::chrono::system_clock::now().time_since_epoch()).count();
std::cerr << milliseconds_since_epoch << std::endl;
return milliseconds_since_epoch;
}
EDIT。私はUNIXで現在の時間を取得したいと思います。私はすでにS.Oの投稿19555121と16177295を読んでいますが、その値はタイムスタンプでも変わりません。
は、コンパイラの最適化のようです。 [mcve]を投稿する必要があります。また、どのコンパイラとどのコンパイルフラグを使用しているかを記述する必要があります。 –
"常に同じです"を定義してください。 –
たとえば、最初の呼び出しは1478019383296、同じ関数への2回目の呼び出しでは1478019383296と同じ値が得られます.2016年11月1日16:56:23.296 GMTの変換はミリ秒単位です次の呼び出しに基づいて値が変更されます。 –