如何解决std::mktime 边缘情况返回 -1
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 举报,一经查实,本站将立刻删除。