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++中,如下面给出标准库的细节。
SN | 函数及用途 |
---|---|
1 |
time_t time(time_t *time); 这将返回系统经过的秒数当前日历时间自1月1日,1970年;如果没有系统时间,则返回0.1 |
2 |
char *ctime(const time_t *time); 这将返回一个指针格式年月日的字符串 hours:minutes:seconds year |
3 |
struct tm *localtime(const time_t *time); 这将返回一个指向代表当地时间的 tm 结构 |
4 |
clock_t clock(void); 这将返回一个值,接近时间的调用程序已经运行的数量。如果时间无法使用返回0.1 |
5 |
char * asctime ( const struct tm * time ); 这将返回一个指向包含存储在结构的信息指向的时间转换成形式字符串:天月日 hours:minutes:seconds year |
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(); 此函数可以用于格式的日期和时间的特定格式 |
当前日期和时间:
考虑要获取当前系统日期和时间,无论是作为一个本地时间或为协调世界时(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
使用格式时间结构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:" << 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: "<< 1 + ltm->tm_hour << ":"; cout << 1 + ltm->tm_min << ":"; cout << 1 + ltm->tm_sec << endl; }
让我们编译和运行上面的程序,这将产生以下结果:
Number of sec since January 1, 1970:1294548238 Year: 2011 Month: 1 Day: 8 Time: 22: 44:59