01/10/2018, 14:53
Time_t và time(0) trong C++
Chào mọi người, em đang học về cách sinh số ngẫu nhiên.
Cho em hỏi về sự khác nhau giữa time_t và time(0) ạ. Em nghĩ time_t là đo thời gian khi lập trình, còn time(0) là tính từ năm 1970.
Nếu đúng như vậy thì em không hiểu time_t lấy mốc đầu tiên là khi nào, khi mình tạo project hay khi mình chạy chương trình.
Em xin cảm ơn
Bài liên quan
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ệnctime
, 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ệnchrono
hại điện hơnC++11 chrono tuy dài dòng nhưng rõ ràng hơn:
std::chrono::system_clock
là cái đồng hồ đo thời gianstd::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.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 gianduration
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ểuseconds
. Vì ở đây có bỏ qua số micro/nano giây nên phải ép kiểu tường minh bằngduration_cast
,seconds
ra thông qua.count()