Cplusplus 简明教程
C++ Date and Time
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++标准库的引用来检查它们的详细信息。
Sr.No |
Function & Purpose |
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); 这返回一个指向 tm 结构的指针,表示本地时间。 |
4 |
clock_t clock(void); 此命令返回估计值为调用程序运行时间的值。如果时间不可用,将返回 .1。 |
5 |
char * asctime ( const struct tm * time ); 此命令返回指向字符串的指针,此字符串包含存储在由时间转换指向的结构中的信息,形式为:日 月 日期 时分秒 年\n\0 |
6 |
struct tm *gmtime(const time_t *time); 此命令返回以 tm 结构形式表示的时间的指针。时间以协调世界时 (UTC) 表示,本质上是格林尼治标准时间 (GMT)。 |
7 |
time_t mktime(struct tm *time); 此命令返回由时间指向的结构中找到的时间的日历时间等价物。 |
8 |
double difftime ( time_t time2, time_t time1 ); 此函数计算 time1 和 time2 之间的秒差。 |
9 |
size_t strftime(); 此函数可用于以特定格式设置日期和时间。 |
Current Date and Time
假设您想要获取当前的系统日期和时间,无论是作为本地时间还是协调世界时 (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
Format Time using 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