Date và Time trong C++
Thư viện chuẩn C++ (C++ Standard Library) không cung cấp một kiểu Date thích đáng. C++ kế thừa cấu trúc và hàm để thao tác Date và Time từ C. Để truy cập các hàm và cấu trúc liên quan tới Date và Time, bạn sẽ cần khai báo <ctime> trong chương trình C++ của bạn.
Có 4 kiểu liên quan tới thời gian: clock_t, time_t, size_t, và tm. Trong đó các kiểu clock_t, size_t và time_t có thể biểu diễn System date và time dạng int.
Kiểu cấu trúc tm giữ Date và Time trong mẫu một cấu trúc C có các phần tử sau:
struct tm
{
int tm_sec;
// so giay trong mot phut, tu 0 toi 61
int tm_min;
// so phut trong mot gio, tu 0 toi 59
int tm_hour;
// so gio trong mot ngay, tu 0 toi 24
int tm_mday;
// ngay trong thang, tu 1 toi 31
int tm_mon;
// thang trong nam, tu 0 toi 11
int tm_year;
// nam, bat dau tu 1900
int tm_wday;
// ngay, bat dau tu Sunday
int tm_yday;
// ngay, bat dau tu 1/1
int tm_isdst;
// so gio cua Daylight Savings Time
}
Bảng dưới liệt kê các hàm quan trọng trong khi bạn làm việc với Date và Time trong C hoặc C++. Tất vả hàm này là một phần của thư viện C và C++ chuẩn và bạn có thể kiểm tra chi tiết bởi sử dụng tham chiếu tới Thư viện chuẩn C++ được cung cấp dưới đây:
- time_t time(time_t *time); trả về thời gian theo lịch của hệ thống, là số giây đã trôi qua từ 1/1/1970. Nếu hệ thống không có thời gian, nó trả về -1.
- char *ctime(const time_t *time); trả về một con trỏ tới một chuỗi của mẫu: day month year hours:minutes:seconds year\n\0.
- struct tm *localtime(const time_t *time); trả về một con trỏ tới cấu trúc tm biểu diễn local time.
- clock_t clock(void); trả về một giá trị mà xấp xỉ với lượng thời gian của chương trình đang gọi đã đang chạy. Trả về -1 nếu thời gian là không có sẵn.
- char * asctime (const struct tm * time); trả về một con trỏ tới một chuỗi mà chứa thông tin được lưu giữ trong cấu trúc được trỏ tới bởi time được biến đổi thành mẫu: day month date hours:minutes:seconds year\n\0
- struct tm *gmtime(const time_t *time); trả về một con trỏ tới time trong mẫu cấu trúc tm. Thời gian được biểu diễn dạng Coordinated Universal Time (UTC), về bản chất là Greenwich Mean Time (GMT).
- time_t mktime(struct tm *time); trả về thời gian theo lịch tương đương với thời gian được tìm thấy trong cấu trúc được trỏ tới bởi time.
- double difftime (time_t time2, time_t time1); tính toán sự khác nhau về số giây của time1 và time2.
- size_t strftime(); sử dụng để định dạng Date và Time trong một định dạng cụ thể.
Date và Time hiện tại trong C++
Giả sử bạn muốn lấy date và time hiện tại của hệ thống: hoặc local time hoặc dạng UTC. Ví dụ sau thực hiện công việc trên:
#include <iostream>
#include <ctime>
using namespace std;
int main( )
{
// tra ve date/time hien tai dua tren system hien tai
time_t hientai = time(0);
// chuyen doi hientai thanh dang chuoi
char* dt = ctime(&hientai);
cout << "Date va Time dang local la: " << dt << endl;
// chuyen doi hientai thanh dang tm struct cho UTC
tm *gmtm = gmtime(&hientai);
dt = asctime(gmtm);
cout << "UTC date va time la: "<< dt << endl;
}
Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Định dạng Time bởi sử dụng cấu trúc tm struct trong C++
Cấu trúc tm struct là rất quan trọng trong khi làm việc với Date và Time trong C và C++. Cấu trúc này giữ Date và Time trong mẫu của một cấu trúc C đã được đề cập ở trên. Hầu hết các hàm liên quan tới thời gian đều sử dụng cấu trúc tm. Ví dụ sau sử dụng các hàm đa dạng liên quan tới Date và Time và cấu trúc tm:
Trong khi sử dụng cấu trúc trong chương này, mình giả sử bạn đã hiểu cơ bản về cấu trúc trong C và cách truy cập các thành viên của cấu trúc bởi sử dụng toán tử ->.
#include <iostream>
#include <ctime>
using namespace std;
int main( )
{
// tra ve date/time hien tai dua tren system hien tai
time_t baygio = time(0);
cout << "So giay ke tu 1/1/1970 la: " << baygio << endl;
tm *ltm = localtime(&baygio);
// in cac thanh phan cua cau truc tm struct.
cout << "Nam: "<< 1900 + ltm->tm_year << endl;
cout << "Thang: "<< 1 + ltm->tm_mon<< endl;
cout << "Ngay: "<< ltm->tm_mday << endl;
cout << "Thoi gian: "<< 1 + ltm->tm_hour << ":";
cout << 1 + ltm->tm_min << ":";
cout << 1 + ltm->tm_sec << endl;
}
Biên dịch và chạy chương trình C++ trên sẽ cho kết quả sau:
Theo Tutorialspoint
Bài trước: Tham chiếu trong C++
Bài tiếp: Input/Output trong C++
Bạn nên đọc
-
Kiểu dữ liệu trong C/C++
-
Đa luồng (Multithread) trong C++
-
Bộ tiền xử lý (Preprocessor) trong C++
-
Chuỗi (String) trong C/C++
-
Hướng dẫn cài Dev-C++
-
Bài tập C++ có giải (code mẫu) về biến, kiểu dữ liệu và toán tử
-
Namespace trong C++
-
Vòng lặp trong C++
-
Lập trình blockchain phần 1: Ngôn ngữ lập trình C++
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:


Cũ vẫn chất
-
Cách dùng Terabox lưu trữ với 1TB miễn phí
Hôm qua 5 -
Điều hòa không mát? Nguyên nhân và cách khắc phục
Hôm qua -
Hàm COUNTIFS, cách dùng hàm đếm ô theo nhiều điều kiện trong Excel
Hôm qua -
Cách chặn từ khóa và Hashtag trên Twitter
Hôm qua -
Cách đặt độ phân giải tùy chỉnh trong OBS
Hôm qua -
Sạc không dây là gì? Nó nhanh hơn hay chậm hơn sạc dây? Danh sách smartphone Android hỗ trợ sạc không dây
Hôm qua -
4 cách kiểm tra lịch sử giao dịch BIDV trên điện thoại, máy tính
Hôm qua -
Cách sao chép hoặc tạo bản sao toàn bộ trang tính trong Google Sheets
Hôm qua -
Valentine đen là gì? Valentine đen là ngày nào?
Hôm qua -
Cách sửa lỗi không thấy bộ điều hợp mạng trên Windows 10
Hôm qua