如何获取当前日期和时间?
问题出现的原因是需要获取当前的日期和时间。解决方法是使用ctime库提供的功能。另外,可以查看stackoverflow上的一个帖子,根据平台的不同可能会有其他解决方法。
以下是一个示例代码,用于获取当前日期和时间:
#include#include using namespace std; int main() { time_t t = time(0); // 获取当前时间 struct tm * now = localtime( &t ); // 转换为本地时间 cout << (now->tm_year + 1900) << '-' // 年份 << (now->tm_mon + 1) << '-' // 月份 << now->tm_mday // 日期 << endl; }
感谢提问者。
代码中使用了C++0x中的chrono
库来获取当前的日期和时间。首先,通过auto now = Clock::now();
来获取当前的时间点。然后,通过std::time_t now_c = Clock::to_time_t(now);
将时间点转换为std::time_t
类型。接下来,使用std::localtime(&now_c);
将std::time_t
类型的时间转换为struct tm
结构体,以便可以获取具体的日期和时间信息。最后,通过parts->tm_year
、parts->tm_mon
和parts->tm_mday
分别获取年份、月份和日期,并输出到控制台。
在代码中还提到了需要包含<ctime>
头文件来使用std::time_t
类型。并且在GCC 4.8版本下,<ctime>
可以被<chrono>
自动包含,所以不需要显式地包含<ctime>
。
通过以上代码可以获取当前的日期和时间信息。
问题的出现原因是因为需要获取当前的日期和时间信息。解决方法是使用C语言的localtime()
函数来获取当前的日期和时间信息。具体的代码如下:
#includetime_t theTime = time(NULL); struct tm *aTime = localtime(&theTime); int day = aTime->tm_mday; int month = aTime->tm_mon + 1; int year = aTime->tm_year + 1900;
在代码中,首先使用time()
函数获取当前时间的时间戳theTime
,然后使用localtime()
函数将时间戳转换为本地时间的结构体tm
。接着,通过访问结构体的成员变量tm_mday
、tm_mon
和tm_year
,分别获取当前的日期、月份和年份。需要注意的是,月份是从0到11表示的,所以需要将tm_mon
加1来得到实际的月份值;年份是从1900年起计算的,所以需要将tm_year
加上1900来得到实际的年份值。
另外,还有一个修正的建议是将localtime(&time(NULL))
改为localtime(&theTime)
,因为直接使用time(NULL)
作为参数传递给localtime()
会导致编译错误。这是因为time(NULL)
是一个右值,不能通过指针传递给localtime()
函数,所以需要先将其存储在一个变量中,然后再传递给localtime()
函数。