C++:
Lấy ngày hiện tại
Làm thế nào:
Dưới đây là cách lấy ngày hiện tại với <chrono>
—hiện đại, sạch sẽ, không lằng nhằng.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
// Lấy thời gian hệ thống hiện tại
auto now = std::chrono::system_clock::now();
// Chuyển đổi sang time_t, sau đó sang tm để có định dạng dễ đọc
std::time_t now_c = std::chrono::system_clock::to_time_t(now);
std::tm* now_tm = std::localtime(&now_c);
// In ra theo định dạng NĂM-THÁNG-NGÀY
std::cout << (now_tm->tm_year + 1900) << '-'
<< (now_tm->tm_mon + 1) << '-'
<< now_tm->tm_mday << '\n';
return 0;
}
Kết quả mẫu bạn sẽ nhận được hôm nay:
2023-4-14
Không cần cầu kỳ, thực hiện đúng công việc.
Tìm hiểu sâu
Ngày xưa, các hàm thời gian của C thống lĩnh—<ctime>
là lựa chọn hàng đầu của bạn. Nhưng với C++11 và phiên bản sau này, <chrono>
đã chiếm lấy ánh đèn sân khấu. Nó an toàn về mặt kiểu và tránh được các sai lầm thông thường với các hàm C truyền thống.
Có sự thay thế? Chắc chắn rồi. Bạn có thể sử dụng std::time
cũ hoặc thậm chí là API cụ thể của OS nếu bạn thích sống mạo hiểm (hoặc có nhu cầu cụ thể).
Và chi tiết thực hiện? <chrono>
biểu diễn các điểm thời gian, khoảng thời gian, và đồng hồ. Nó chính xác và được thiết kế cẩn thận. Thời gian là điều phức tạp (giây nhuận, múi giờ), và <chrono>
xử lý sự phức tạp này bên dưới, để bạn không phải lo lắng.
Xem thêm
- Tham khảo C++ - thư viện
<chrono>
- Tham khảo C++ -
<ctime>
kiểu cũ - Để tìm hiểu sâu hơn, hãy xem thư viện ngày của Howard Hinnant, một sự mở rộng của
<chrono>
: https://github.com/HowardHinnant/date - Nếu bạn cần hỗ trợ múi giờ ngay lập tức, hãy thử cái này: https://en.cppreference.com/w/cpp/chrono/current_zone