C++ 日期和时间

C++ 日期和时间

C++标准库没有提供适当的日期类型。C++继承了用于日期和时间操作的结构和函数来自C。要访问与日期和时间相关的函数和结构,您需要在C++程序中包含标签”ctime”头文件。

有四种与时间相关的类型:clock_t,time_t,size_t和tm。类型clock_t, size_t和time_t能够表示系统时间和日期为某种整数。

结构类型 tm 以C结构的形式保存日期和时间,其中包含以下元素−

struct tm {
   int tm_sec;   // seconds of minutes from 0 to 61
   int tm_min;   // minutes of hour from 0 to 59
   int tm_hour;  // hours of day from 0 to 24
   int tm_mday;  // day of month from 1 to 31
   int tm_mon;   // month of year from 0 to 11
   int tm_year;  // year since 1900
   int tm_wday;  // days since sunday
   int tm_yday;  // days since January 1st
   int tm_isdst; // hours of daylight savings time
}

以下是在C或C++中使用日期和时间时常用的重要函数。所有这些函数都是标准C和C++库的一部分,您可以使用下面的C++标准库参考来查看它们的详细信息。

序号 功能与目的
1 time_t time(time_t *time); 返回系统当前的日历时间,以自1970年1月1日以来经过的秒数表示。如果系统没有时间,则返回.1。
2 char *ctime(const time_t *time); 返回指针指向的字符串,格式如下: 日 月 年 时:分:秒 年\n\0 。
3 struct tm *localtime(const time_t *time); 返回指向本地时间的结构体指针。
4 clock_t clock(void); 返回一个近似表示调用程序运行时间的值。如果时间不可用,则返回.1。
5 char * asctime ( const struct tm * time ); 返回指针指向的字符串,其中包含由time指向的结构体中存储的信息,转换为以下格式:日 月 日期 时:分:秒 年\n\0
6 struct tm *gmtime(const time_t *time); 返回以结构体形式表示的时间的指针。该时间以协调世界时(UTC)表示,本质上是格林威治标准时间(GMT)。
7 time_t mktime(struct tm *time); 返回time指针指向的结构体中找到的日历时间的等效值。
8 double difftime ( time_t time2, time_t time1 ); 该函数计算time1和time2之间的秒差。
9 size_t strftime(); 此函数可用于按特定格式格式化日期和时间。

当前日期和时间

假设您想要获取当前系统日期和时间,无论是作为本地时间还是作为协调世界时(UTC)。以下是实现相同目的的示例-

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);

   // convert now to string form
   char* dt = ctime(&now);

   cout << "The local date and time is: " << dt << endl;

   // convert now to tm struct for UTC
   tm *gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "The UTC date and time is:"<< dt << endl;
}

当以上代码被编译和执行时,将产生以下结果−

The local date and time is: Sat Jan  8 20:07:41 2011

The UTC date and time is:Sun Jan  9 03:07:41 2011

使用struct tm格式化时间

tm 结构在使用C或C++处理日期和时间时非常重要。该结构以C结构的形式保存日期和时间。大多数与时间相关的函数都使用了tm结构。以下是一个使用各种日期和时间相关函数和tm结构的示例 –

在本章中使用结构时,我假设您具备基本的C结构理解和如何使用箭头 -> 运算符访问结构成员的知识。

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);

   cout << "Number of sec since January 1,1970 is:: " << now << endl;

   tm *ltm = localtime(&now);

   // print various components of tm structure.
   cout << "Year:" << 1900 + ltm->tm_year<<endl;
   cout << "Month: "<< 1 + ltm->tm_mon<< endl;
   cout << "Day: "<< ltm->tm_mday << endl;
   cout << "Time: "<< 5+ltm->tm_hour << ":";
   cout << 30+ltm->tm_min << ":";
   cout << ltm->tm_sec << endl;
}

当上述代码被编译和执行时,会产生以下结果−

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程