首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么解决mktime只能获得1970年之后的time_t值?

2013-08-01 
如何解决mktime只能获得1970年之后的time_t值???time_t GetTimeFromString( const char* strTime ){tm tmO

如何解决mktime只能获得1970年之后的time_t值???

time_t GetTimeFromString( const char* strTime )
{
    tm tmObj;
    sscanf( strTime, "%4d-%02d-%02d %02d:%02d:%02d", 
            &st.tm_year, &st.tm_mon, &st.tm_mday, &st.tm_hour, &st.tm_min, &st.tm_sec );
    tmObj.tm_year -= 1900;
    tmObj.tm_mon -= 1;
    tmObj.tm_isdst -= 1;
    return mktime( &tmObj );
}

void main()
{
    time_t time1 = GetTimeFromString( "1960-01-01 00:00:00" ); //-1
    time_t time2 = GetTimeFromString( "1970-01-01 00:00:00" ); //-1
    time_t time3 = GetTimeFromString( "1980-01-01 00:00:00" ); //315504000
}


目的就是将一个时间字符串转换成time_t类型
也知道了 如果使用mktime来转换只能得到1970年之后的时间 否则就为-1
有什么办法可以使时间的范围更大一点呢?
也就是填大于等于"1970-01-01 00:00:00"时 能够得出正常的time_t值,而不是-1!
谢谢
[解决办法]
struct tm可解决

热点排行