C++ 日期和时间
-
日期和时间
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++标准库来检查其详细信息。- time_t time(time_t * time); - 这将返回自1970年1月1日以来经过的秒数的系统当前日历时间。如果系统没有时间,则返回.1。
- char * ctime(const time_t * time); - 这将返回一个指针,该字符串的格式为day month year year hours:minutes:seconds year \ n \ 0。
- struct tm * localtime(const time_t * time); - 这将返回一个指向本地时间的tm结构的指针。
- clock_t clock(void); - 这将返回一个近似值,该值近似于调用程序已运行的时间。如果时间不可用,则返回值.1。
- char * asctime(const struct tm * time); - 这将返回一个指向字符串的指针,该字符串包含存储在时间指向的结构中的信息,该信息转换为以下格式:日月日期小时:分钟:秒年\ n \ 0
- struct tm * gmtime(const time_t * time); - 这将以tm结构的形式返回指向时间的指针。时间以协调世界时(UTC)表示,本质上是格林威治标准时间(GMT)。
- time_t mktime(struct tm * time); - 这将返回与时间所指向的结构中找到的时间等效的日历时间。
- double difftime(time_t time2,time_t time1); - 此函数以秒为单位计算time1和time2之间的时差。
- 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格式化时间
在使用C或c++处理日期和时间时,tm结构是非常重要的。这个结构以上面提到的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:1563027637 Year2019 Month: 7 Day: 13 Time: 15:21:38