2017-04-19 11 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; 
} 

EDIT:解決しよう

#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

私はミリ秒単位で現在の時刻を持っています。今私は現在の時間(コード内のシステム時間)に例えば300msを追加したいと思います。 – Janoshh

+0

'systemtime + = 300;'? –

答えて

-1

あなたがしようとしましたadjtime()? 。 http://man7.org/linux/man-pages/man3/adjtime.3.html

+0

関連していません。 'adjtime()'はシステムクロックを調整するために使われます... opは 'timeval'型の変数を変更したいだけです。 – Alex

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

関連する問題