1. ホーム
  2. c++

[解決済み] 1970年からのミリ秒単位で現在のタイムスタンプを取得する方法(Javaの取得方法と同じ

2022-02-02 10:24:25

質問

Javaでは System.currentTimeMillis() であるエポックタイムからミリ秒単位で現在のタイムスタンプを取得します。

<ブロッククオート

現在時間と 1970年1月1日午前0時(UTC)。

C++で同じものを得るには?

現在、私は現在のタイムスタンプを取得するためにこれを使用しています。

struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds

cout << ms << endl;

これは正しいのか、そうでないのか?

解決方法は?

C++ 11 のライブラリにアクセスできるのであれば、そのライブラリにある std::chrono ライブラリがあります。これを使うと、次のようにUnix Epochからのミリ秒を得ることができます。

#include <chrono>

// ...

using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
    system_clock::now().time_since_epoch()
);