2015-04-01 43 views
0

我想知道什麼是在Linux(C++)中獲取時間戳最便宜的方法。
我認爲這是一個準確的交易,所以我相信有超過1種可能性。
我需要毫秒但不一定microseconds,所以std::localtime不是一個選項,gettimeofday可能太昂貴。 (由於微秒準確度)。'最便宜的'在Linux(C++)中獲取時間戳的方式

+0

你在Bash /控制檯或在C++的意思? – 2015-04-01 08:24:17

+0

C++,編輯que – SagiLow 2015-04-01 08:30:21

+0

我們不能回答,直到你澄清你是什麼意思與'最便宜'。通常的打印方法是使用gettimeofday()並將答案轉換爲毫秒:((tv_sec * 1000)+(tv_usec/1000))或微秒:(tv_sec * 1000000 + tv_usec)。 編輯:確保你用很長的時間來對這兩個問題進行解答。 – guilleamodeo 2015-04-01 08:36:01

回答

0

我建議的ctime庫和下面的代碼:

std::time_t timestamp = std::time(nullptr); 
    std::cout << std::asctime(std::localtime(&result)) 
       << result << " seconds since the Epoch\n"; 

從紀元(非常簡單的),這將在「結果」變量返回的秒數。有很多方法可以將其轉換爲可讀格式,但正如您所說,這樣做的代價很高。獲取該數字將非常有效,因爲它僅從系統讀取變量,而不是轉換/連接並計算可讀日期。

+0

謝謝,我想這是最便宜的,但我需要比秒更好的分辨率(毫秒,我猜?) – SagiLow 2015-04-01 08:32:10

1

1:fprintf(stdout, "%u\n", (unsigned)time(NULL));

2:struct timeval tv; gettimeofday(&tv,NULL); tv.tv_sec // seconds tv.tv_usec // microseconds

3:std::time_t result = std::time(nullptr); std::cout << std::asctime(std::localtime(&result)) << result << " seconds since the Epoch\n";

4:

using namespace std::chrono; 
milliseconds ms = duration_cast<milliseconds>(
    high_resolution_clock::now().time_since_epoch() 
);` 
+0

感謝您的回答,第二個並不便宜,最後是第一個答案並只包含秒,我不知道我明白了第一個)... – SagiLow 2015-04-01 08:37:18

+0

@SagiLow嘗試chrono – user3013807 2015-04-01 08:52:22

+0

生病了看看,謝謝! – SagiLow 2015-04-01 09:51:36

相關問題