Trang tài liệu
Khóa học C++ nền tảng
Chương 11. Thư viện mẫu chuẩn (STL)
Ngày giờ C++

Ngày giờ C++

Trong C++, bạn có thể làm việc với ngày và giờ bằng thư viện chrono, là một phần của Thư viện chuẩn (STL). Thư viện chrono cung cấp nhiều loại dữ liệu và hàm khác nhau để đại diện và thao tác với các duration, time point và clock.

Duration

duration biểu thị một khoảng thời gian, có thể được biểu thị bằng nhiều đơn vị khác nhau như giây, phút, giờ, v.v. Để tạo duration, hãy sử dụng lớp mẫu std::chrono::duration. Các mẫu duration được xác định trước phổ biến là:

  • std::chrono::seconds
  • std::chrono::minutes
  • std::chrono::hours Ví dụ:
#include <iostream>
#include <chrono>
 
int main() {
    std::chrono::seconds sec(5);
    std::chrono::minutes min(2);
    std::chrono::hours hr(1);
    return 0;
}

Time point

time_point đại diện cho một thời điểm cụ thể. Nó thường được tạo bằng cách sử dụng kết hợp giữa duration và clock. Trong C++, có ba loại clock được cung cấp bởi thư viện chrono:

  • std::chrono::system_clock: Đại diện cho wall clock thời gian thực trên toàn hệ thống.
  • std::chrono::steady_clock: Đại diện cho clock đơn điệu được đảm bảo không bao giờ bị điều chỉnh.
  • std::chrono::high_resolution_clock: Đại diện cho clock có chu kỳ đánh dấu ngắn nhất. Ví dụ:
#include <iostream>
#include <chrono>
 
int main() {
    std::chrono::system_clock::time_point tp = std::chrono::system_clock::now();
    return 0;
}

Clock

Clock cung cấp quyền truy cập vào thời gian hiện tại. Nó bao gồm các phần tử sau:

  • time_point: Một thời điểm cụ thể.
  • duration: Khoảng thời gian giữa hai mốc thời gian.
  • now(): Một hàm tĩnh trả về điểm thời gian hiện tại. Ví dụ:
#include <iostream>
#include <chrono>
 
int main() {
    // Nhận time_point hiện tại bằng system_clock
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
 
    // Nhận time_point 1 giờ kể từ bây giờ
    std::chrono::system_clock::time_point one_hour_from_now = now + std::chrono::hours(1);
    return 0;
}

Chuyển đổi thời điểm thành thời gian biểu diễn lịch

Để chuyển đổi một điểm thời gian thành biểu diễn lịch, bạn có thể sử dụng hàm std::chrono::system_clock::to_time_t. Ví dụ:

#include <iostream>
#include <chrono>
#include <ctime>
 
int main() {
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);
    std::cout << "Current time: " << std::ctime(&now_c) << std::endl;
    return 0;
}

Phần này tóm tắt chức năng cơ bản của việc làm việc với ngày và giờ trong C++ bằng thư viện chrono. Bạn có thể tìm thấy các tính năng nâng cao hơn, chẳng hạn như thời lượng truyền và số học thời gian, trong tài liệu tham khảo C++.