Có nhiều cách in ngày, giờ hệ thống dưới dạng đọc được (Human Readable).
Cách 1: Dùng time.h (C-style)
time()- lấy thời gian lịch hiện tại (kiểu arithmetic).localtime()- chuyển time_t sang struct tm (giờ địa phương).asctime()- chuyển struct tm sang chuỗi readable.
Định dạng: Day Month Date Hour:Min:Sec Year
#include <iostream>
#include <ctime>
using namespace std;
int main() {
time_t t;
struct tm *tt;
time(&t); // Lấy thời gian hiện tại
tt = localtime(&t); // Chuyển sang giờ địa phương
cout << "Current Day, Date and Time = " << asctime(tt);
return 0;
}
Current Day, Date and Time = Tue Jul 23 19:05:50 2019
Cách 2: Dùng Chrono Library (C++11)
Thư viện chrono đo thời gian chính xác đến nanosecond.
#include <chrono>
#include <ctime>
#include <iostream>
using namespace std;
int main() {
auto now = chrono::system_clock::now();
time_t tt = chrono::system_clock::to_time_t(now);
cout << ctime(&tt) << endl;
return 0;
}
Tue Jul 23 19:05:50 2019
Cách 3: C-style thuần túy (stdio.h)
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
printf("%s", ctime(&t));
return 0;
}
Tue Jul 23 20:14:42 2019
So sánh
| Cách | Tiêu chuẩn | Độ chính xác | Ghi chú |
|---|---|---|---|
| time.h + ctime | C/C++98 | Giây | Đơn giản, phổ biến |
| chrono | C++11 | Nanosecond | Hiện đại, type-safe, đo hiệu năng |
| stdio.h | C | Giây | Chỉ dùng printf |
Mở rộng: Format tùy chỉnh với chrono (C++20)
#include <chrono>
#include <format>
#include <iostream>
using namespace std;
int main() {
auto now = chrono::system_clock::now();
// C++20: format tùy chỉnh
cout << format("{:%Y-%m-%d %H:%M:%S}", now) << endl;
return 0;
}