问题描述
std::time_t SecondsSinceEpoch(int year,int month,int day)
{
std::tm t{};
t.tm_year = year;
t.tm_mon = month;
t.tm_mday = day;
t.tm_year -= 1900;
--t.tm_mon;
t.tm_isdst = -1;
return std::mktime(&t);
}
它适用于最近的日期,但是在测试 1970,1,1
时它返回 -1,而我希望它返回 0。我可以为此特定日期添加一个边缘案例来解决问题,但为什么会发生这种情况?
编辑:
诸如 1970-01-10
之类的日期返回 738000
,但是在带有 0hr,0s,0m
的 https://www.epochconverter.com/ 当地时间,它显示为 741600
。此外,诸如 2000-01-01
之类的日期返回 946645200
,并且在网站的当地时间,它还返回 946645200
。 1970 年 1 月 10 日足够远,以至于转换的边缘情况不会使时间为负并返回 -1,但时间戳在以后的日期是相等的。这对我来说没有任何意义。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)