本文介绍了mktime只处理闰年?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在中,我提议使用:
但在中出现错误的结果:
But an incorrect result in gcc 5.1.0:
并且:
我假设这是gcc 5.1.0和Visual Studio 2015中的错误?
I assume this is a bug in gcc 5.1.0 and Visual Studio 2015?
推荐答案
:
mktime
会将所有时间范围更新为适当的范围。 return:
mktime
will return:
实现必须做出什么努力来转换 tm
。因此只要时间被转换或 static_cast< time_t>( - 1)
/ code>已填写。
It is not specified however what efforts the implementation must make to convert the tm
. So as long as the time is converted or static_cast<time_t>(-1)
is returned the requirements for mktime
have been filled.
意味着以下函数将在所有平台上正确支持 mktime
:
bool leap_year(int year) {
tm bar = { 0, 0, 0, 29, 1, year - 1900 };
return static_cast<time_t>(-1) != mktime(&bar) && bar.tm_mday == 29 && bar.tm_mon == 1 && bar.tm_year == year - 1900;
}
这篇关于mktime只处理闰年?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!