我想用我的简单程序做的是计算两个日期之间的秒差.
time_t referenceDate;
time_t dateNow = time(0);
struct tm referenceDateComponent = {0};
referenceDateComponent.tm_hour = 0;
referenceDateComponent.tm_min = 0;
referenceDateComponent.tm_sec = 0;
referenceDateComponent.tm_year = 89;
referenceDateComponent.tm_mon = 11;
referenceDateComponent.tm_mday = 31;
referenceDate = mktime(&referenceDateComponent);
long seconds = difftime(dateNow, referenceDate);
Whit应用程序上面的代码工作正常,但如果尝试设置tm.year为负(在1900之前构建日期),则mktime()函数返回-1
我知道time_t类型只根据文档管理从1970年1月1日UTC开始的日期:
For historical reasons, it is generally implemented as an integral value representing the number of seconds elapsed since 00:00 hours, Jan 1, 1970 UTC (i.e., a unix timestamp). Although libraries may implement this type using alternative time representations.
我知道还有Boost库,但对我来说不是一个有用的解决方案.
所以我的问题是,从1970年以前的日期开始,有什么办法可以在几秒钟内获得变化?