GNU/Linux >> Belajar Linux >  >> Linux

Dapatkan detik sejak zaman di Linux

Di C.

time(NULL);

Di C++.

std::time(0);

Dan nilai pengembalian waktu adalah :time_t tidak lama lama


Fungsi asli Linux untuk mendapatkan waktu adalah gettimeofday() [ada beberapa rasa lain juga], tetapi itu memberi Anda waktu dalam hitungan detik dan nanodetik, yang lebih dari yang Anda butuhkan, jadi saya sarankan Anda terus menggunakan time() . [Tentu saja, time() diimplementasikan dengan memanggil gettimeofday() di suatu tempat - tetapi saya tidak melihat manfaat memiliki dua bagian kode berbeda yang melakukan hal yang persis sama - dan jika Anda menginginkannya, Anda akan menggunakan GetSystemTime() atau semacamnya di Windows [tidak yakin itu nama yang tepat, sudah lama sejak saya memprogram di Windows]


Anda sudah menggunakannya:std::time(0) (jangan lupa #include <ctime> ). Namun, apakah std::time sebenarnya mengembalikan waktu sejak zaman tidak ditentukan dalam standar (C11, direferensikan oleh standar C++):

7.27.2.4 time fungsi

Sinopsis

#include <time.h>
time_t time(time_t *timer);

Deskripsi

Fungsi waktu menentukan waktu kalender saat ini. Enkode nilai tidak ditentukan. [tekankan pada saya]

Untuk C++, C++11 dan yang lebih baru memberikan time_since_epoch . Namun, sebelum C++20 zaman std::chrono::system_clock tidak ditentukan dan karena itu kemungkinan tidak portabel dalam standar sebelumnya.

Tetap saja, di Linux std::chrono::system_clock biasanya akan menggunakan Waktu Unix bahkan di C++11, C++14 dan C++17, sehingga Anda dapat menggunakan kode berikut:

#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. Dapatkan File Dibuat/Waktu pembuatan??

  2. Dapatkan waktu saat ini dalam hitungan detik sejak Zaman di Linux, Bash

  3. Status Proses Linux

  1. Bagaimana cara mendapatkan waktu mulai dari proses Linux yang sudah berjalan lama?

  2. Cara mendapatkan waktu UTC

  3. Shutdown Linux dalam 30 detik?

  1. Dapatkan Usia File yang Diberikan?

  2. Linux – Mengapa Utils Linux Tidak Menggunakan System Call Untuk Mendapatkan Waktu Saat Ini?

  3. Linux – Bagaimana Mendapatkan Waktu Jam Dinding Dari Proses Yang Berjalan?