2017-04-19 87 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