2012-03-18 35 views
0

我想制作一个程序,其中用户将输入他/她的生日,该程序将计算他们已经生活了多少天,几个月,几年,几小时和几分钟。如何在C++中分割日期和时间?

我搜索了Google,我发现有一种方法可以将日期分成三至四个部分。

我已复制此代码,它似乎工作。只是我不明白这一点。我读过的所有论坛都没有帮助。任何人都可以解释给我吗?

time_t t = time(NULL); 
tm* timePtr = localtime(&t); 

cout << "seconds= " << timePtr->tm_sec << endl; 
cout << "minutes = " << timePtr->tm_min << endl; 
cout << "hours = " << timePtr->tm_hour << endl; 
cout << "day of month = " << timePtr->tm_mday << endl; 
cout << "month of year = " << timePtr->tm_mon << endl; 
cout << "year = " << timePtr->tm_year + 1900 << endl; 
cout << "weekday = " << timePtr->tm_wday << endl; 
cout << "day of year = " << timePtr->tm_yday << endl; 
cout << "daylight savings = " << timePtr->tm_isdst << endl; 
+5

哪一部分你不明白? – 2012-03-18 20:35:10

+0

您需要在月份中添加一个以获得传统的月份编号(1月为1,但'tm_mon'在1月份使用0等),但您已经考虑了年份加上1900年。还有什么需要解释? 'localtime()'适用于你程序当前的时区;你可以使用'gmtime()'来确定时间值w.r.t UTC(又名GMT)。时区通常会让生活更加复杂。 – 2012-03-18 20:35:50

+1

在那段代码中没有太多东西需要理解,** localtime()**函数为你完成所有的肮脏工作,你只需访问** tm **字段来读取结果(** time_t **保留日期以紧凑形式显示,而** tm **将组件中的日期(秒,分钟,小时,日,月,年和其他有用信息)分割。 – 2012-03-18 20:37:14

回答

0

这是而不是标准C++代码。这是(也)POSIX代码。

(最近的C++ 11个标准给你<chrono>但很少编译器实现它;在Linux上,你需要GCC 4.6或4.7,也有<ctime>

this answer非常有关你的问题。

至于time,gettimeofday,localtime, strftime他们在手册页中有很好的参考文献。你不明白什么?

(按照我给你的链接,仔细阅读链接的页面)。

+1

”和“”您的C++标准版本? – 2012-03-18 20:40:14

+0

更正,谢谢 – 2012-03-18 20:41:30

相关问题