📅  最后修改于: 2020-12-17 05:08:44             🧑  作者: Mango
C++标准库没有提供正确的日期类型。 C++从C继承了用于日期和时间操作的结构和函数。要访问与日期和时间相关的函数和结构,您需要在C++程序中包括
有四种与时间相关的类型: 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); This returns the current calendar time of the system in number of seconds elapsed since January 1, 1970. If the system has no time, .1 is returned. |
2 |
char *ctime(const time_t *time); This returns a pointer to a string of the form day month year hours:minutes:seconds year\n\0. |
3 |
struct tm *localtime(const time_t *time); This returns a pointer to the tm structure representing local time. |
4 |
clock_t clock(void); This returns a value that approximates the amount of time the calling program has been running. A value of .1 is returned if the time is not available. |
5 |
char * asctime ( const struct tm * time ); This returns a pointer to a string that contains the information stored in the structure pointed to by time converted into the form: day month date hours:minutes:seconds year\n\0 |
6 |
struct tm *gmtime(const time_t *time); This returns a pointer to the time in the form of a tm structure. The time is represented in Coordinated Universal Time (UTC), which is essentially Greenwich Mean Time (GMT). |
7 |
time_t mktime(struct tm *time); This returns the calendar-time equivalent of the time found in the structure pointed to by time. |
8 |
double difftime ( time_t time2, time_t time1 ); This function calculates the difference in seconds between time1 and time2. |
9 |
size_t strftime(); This function can be used to format date and time in a specific format. |
假设您要以本地时间或世界标准时间(UTC)检索当前系统日期和时间。以下是实现相同目的的示例-
#include
#include
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
在C或C++中使用日期和时间时, tm结构非常重要。如上所述,该结构以C结构的形式保存日期和时间。大多数与时间相关的功能都使用tm结构。以下是利用各种与日期和时间相关的功能和tm结构的示例-
在本章中使用结构时,我假设您对C结构以及如何使用arrow-> 运算符访问结构成员有基本的了解。
#include
#include
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<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