我目前的模式(UNIX)是調用gettimeofday
,施放tv_sec
場到time_t
,傳遞,通過localtime
,並將結果與tv_usec
結合。這給了我一個完整的日期(年,月,日,時,分,秒,納秒)。完全分離的日期從的std ::計時毫秒:: SYSTEM_CLOCK
我正在嘗試將我的代碼更新到C++ 11以實現可移植性和一般良好實踐。我能夠做到以下幾點:
auto currentTime = std::chrono::system_clock::now();
const time_t time = std::chrono::system_clock::to_time_t(currentTime);
const tm *values = localtime(&time);
// read values->tm_year, etc.
但我卡在毫秒/納秒。首先,to_time_t
聲稱舍入是實現定義的(!),所以我不知道22.6秒的最終讀數是否應該實際爲21.6,而對於另一個我不知道如何獲得自上一次以來的毫秒數秒(是標準保證的秒數是否正常?也就是說,我可以得到自紀元以來的總毫秒數,只是模數嗎?即使這樣可以感覺到難看)。
我應該如何從毫秒級的std::chrono::system_clock
得到當前日期?
_IF的std :: time_t的具有精度降低,這是實現定義的值是否是** **圓潤或**截斷**。在任何情況下,22.6將永遠不會是21.6,所以不要擔心。 –
@TomKnapen,但21.6 *可以*成爲22.6,如果它是舍入而不是截斷秒。也許我的措辭不是最好的,但這就是我所掌握的。 – Dave
根據我的經驗,四捨五入21.6等於22,截斷21.6等於21.因此,無論如何,除非您自己添加「小數」部分,否則21.6無法成爲22.6。 –