我如何计算 C++ 纪元以来的天数,我知道我应该使用mktime
函数,但我不明白如何实现它
谢谢!
从cplusplus.com修改一些示例代码:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t seconds;
seconds = time (NULL);
int daysSinceEpoch = seconds/(60*60*24);
printf ("%ld days since January 1, 1970", daysSinceEpoch);
return 0;
}
日期不容易正确使用。今天的标准库不提供正确执行此操作的能力。您应该使用适当的日期库,例如 boost::date 或Howard Hinnant 的<date>
。
使用 Hinnant 的库,代码可能看起来像这样:
date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;
从获取当前时间开始,使用time(NULL)
. 将该值传递给gmtime
,它会返回一个tm*
. 阅读tm
.