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