GNU/Linux >> Linux の 問題 >  >> Linux

Linux でエポックからの秒数を取得する

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();
}

Linux
  1. Linuxをより速く起動する

  2. Linux – Linux Utilsが現在の時刻を取得するためにシステムコールを使用しないのはなぜですか?

  3. Linux、Bash でエポック以降の現在の時間を秒単位で取得する

  1. 与えられたファイルの年齢を取得しますか?

  2. UTC 時刻を取得する方法

  3. Linux は 30 秒でシャットダウンしますか?

  1. Linux –実行中のプロセスの壁掛け時計の時間を取得する方法は?

  2. ファイルの作成/作成時間を取得しますか?

  3. LinuxでPythonを使用してファイル作成時間を取得する