time_t
là kiểu dữ liệu, ko phải để đo đạc cái gì hết. Chữ _t
nghĩa là “type”. time_t
viết tắt cho time_type là kiểu dữ liệu “thời gian”.
biến kiểu time_t
có giá trị là số giây tính từ epoch (1970-01-01 00:00:00 UTC)
time(0)
là hàm trong thư viện ctime
, nhận vào 1 con trỏ, thực hiện lưu giá trị x là số giây tính từ epoch vào nơi mà con trỏ đó trỏ tới, và trả về x. Nếu con trỏ đó là NULL
thì chỉ trả về x.
và cuối cùng là time_t
là của nợ C++ gánh từ C qua, C++ có thư viện chrono
hại điện hơn
C++11 chrono tuy dài dòng nhưng rõ ràng hơn:
#include <iostream>
#include <chrono>
int main()
{
std::chrono::seconds secondsSinceEpoch =
std::chrono::duration_cast<std::chrono::seconds>(
std::chrono::system_clock::now().time_since_epoch());
std::cout << secondsSinceEpoch.count();
}
-
std::chrono::system_clock
là cái đồng hồ đo thời gian
- gọi
std::chrono::system_clock::now()
nghĩa là lấy thời gian hiện tại của cái system_clock này, kiểu dữ liệu của nó là time_point
là mốc thời gian
- gọi tiếp
.time_since_epoch()
nghĩa là lấy mốc thời gian hiện tại trừ cho mốc thời gian tại epoch. Kết quả trả về là 1 khoảng thời gian duration
-
duration
có thể chứa số giây, số mili giây, micro giây, hay nano giây. Muốn lấy số giây thì phải ép kiểu về kiểu seconds
. Vì ở đây có bỏ qua số micro/nano giây nên phải ép kiểu tường minh bằng duration_cast
,
- cuối cùng lấy giá trị số của
seconds
ra thông qua .count()