由于某些嵌入式标准库中的时间函数没有64位版本,所以需要自己实现。
这里的两个函数我在linux上与库函数作了对比测试,遍历了1970到2270的每一秒,结果无误。代码是从网上搜集修改而来,具体出处实在是忘记了,印象中都来源于glic库。
mktime64实现:
/***************************************************************************//**
* \brief Convert time struct to UTC seconds.
* \param year : [1900, ..., 2018, ...]
* \param mon : [1, 12]
* \param day : [1, 31]
* \param hour : [0, 23]
* \param min : [0, 59]
* \param sec : [0, 59]
* \return seconds from 1970-1-1 0:0:0
* \author glic
* \note timezone is ignored
******************************************************************************/
long long mktime64 (unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
{
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
mon