time(NULL);
C++ で。
std::time(0);
time の戻り値は time_t です。 長いではない
時間を取得するためのネイティブ Linux 関数は gettimeofday()
です [他にもいくつかのフレーバーがあります]、しかしそれでは秒単位とナノ秒単位の時間が得られます。これは必要以上です。そのため、引き続き time()
を使用することをお勧めします。 . [もちろん、time()
gettimeofday()
を呼び出すことで実装されます どこかで-しかし、まったく同じことを行う2つの異なるコードを使用する利点はわかりません-そして、それが必要な場合は、 GetSystemTime()
を使用することになります または Windows でのそのようなもの [正しい名前かどうかわかりません。Windows でプログラミングしてからしばらく経ちます]
すでに使用しています:std::time(0)
(#include <ctime>
にすることを忘れないでください) )。ただし、 std::time
かどうか エポックが標準 (C11、C++ 標準によって参照される) で指定されていないため、実際には時間が返されます:
7.27.2.4 time
関数
あらすじ
#include <time.h>
time_t time(time_t *timer);
説明
time 関数は、現在のカレンダー時間を決定します。 値のエンコードが指定されていません。 [鉱山を強調]
C++ の場合、C++11 以降は time_since_epoch
を提供します .ただし、C++20 より前の std::chrono::system_clock
のエポック は指定されていなかったため、以前の標準では移植性がなかった可能性があります。
それでも、Linux では std::chrono::system_clock
は通常、C++11、C++14、および C++17 でも Unix Time を使用するため、次のコードを使用できます:
#include <chrono>
// make the decltype slightly easier to the eye
using seconds_t = std::chrono::seconds;
// return the same type as seconds.count() below does.
// note: C++14 makes this a lot easier.
decltype(seconds_t().count()) get_seconds_since_epoch()
{
// get the current time
const auto now = std::chrono::system_clock::now();
// transform the time into a duration since the epoch
const auto epoch = now.time_since_epoch();
// cast the duration into seconds
const auto seconds = std::chrono::duration_cast<std::chrono::seconds>(epoch);
// return the number of seconds
return seconds.count();
}