2017-04-19 88 views
1

使用下面的代碼我可以得到當前時間以毫秒爲單位。現在我想將毫秒添加到系統時間。任何提示?添加毫秒到timeval C++

#include <stdio.h> 
#include <sys/time.h> 

int main (int argc, char** argv) { 
    struct timeval time; 
    gettimeofday (&time, NULL); 

    long systemtime = time.tv_sec*1000L + time.tv_usec/1000L; 

    printf("Time in milliseconds: %ld milliseconds\n", systemtime); 
    //sample output: 1492592522106 

    return 0; 
} 

編輯:解決

#include <stdio.h> 
#include <sys/time.h> 

int main (int argc, char** argv) { 
    struct timeval time; 
    gettimeofday (&time, NULL); 

    printf("Time in milliseconds: %ld milliseconds\n", time.tv_sec*1000L + 
    (time.tv_usec/1000L)); 
    printf("Time in milliseconds+300: %ld milliseconds\n", time.tv_sec*1000L 
    + (time.tv_usec/1000L+300)); 
    printf("usec: %ld", time.tv_usec/1000L); 

    return 0; 
} 

輸出:

Time in milliseconds: 1492595580965 milliseconds (Wed, 19 Apr 2017 09:53:00.965 GMT) 
Time in milliseconds+300: 1492595581265 milliseconds (Wed, 19 Apr 2017 09:53:01.265 GMT) 
usec: 965 
+0

的可能的複製[如何使用timeval結構計算毫秒?](http://stackoverflow.com/questions/18650057/how-to-calculate-milliseconds- using-timeval-structure) –

+0

我已經有了以毫秒爲單位的當前時間。現在我想添加例如300毫秒到當前時間(代碼中的系統時間)。 – Janoshh

+0

'systemtime + = 300;'? –

回答

4

您可以使用std::chrono庫來執行此任務。 下面的代碼片段將幫助您完成此,

auto now = std::chrono::system_clock::now().time_since_epoch(); 
auto t100ms = std::chrono::milliseconds(100); 
auto time = now + t100ms; 
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(time).count(); 
+0

std :: chrono僅適用於C++ 11及更高版本。你應該在你的回答中提及。 – Alex

+0

需要包含std :: chrono:'#include ' – Alex