Cộng đồng chia sẻ tri thức Lib24.vn

Date và Time trong C++

Gửi bởi: Phạm Thị Phương Hoa 28 tháng 10 2019 lúc 14:46:07


Mục lụ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 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:

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:


Được cập nhật: 29 tháng 4 lúc 9:00:39 | Lượt xem: 630