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