CODBCRecordset res;
CString str;
struct tm time;
CTime t1(1970, 1, 1, 0, 0, 0 ) , t2;
long *lval;if (!res.GetFieldValue(nNum,&time)) bResOk = false;
t2 = CTime(time->tm_year, time->tm_mon, time->tm_mday, time->tm_hour, time->tm_min, time->tm_sec);
t2 = CTime(time.tm_year, time.tm_mon, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec);
ts = t2 - t1;
*lval=ts.GetTotalSeconds();我写的是一个动态库,运行时报错,如果我将t1设成1970年以后的日期就没有问题!是不是CTime不支持1970.1.1日啊

解决方案 »

  1.   

    CODBCRecordset res;
    CString str;
    struct tm time;
    CTime t1(1970, 1, 1, 0, 0, 0 ) , t2;
    long *lval;if (!res.GetFieldValue(nNum,&time)) bResOk = false;
    t2 = CTime(time.tm_year, time.tm_mon, time.tm_mday, time.tm_hour, time.tm_min, time.tm_sec);
    ts = t2 - t1;
    *lval=ts.GetTotalSeconds();错了,应该是这样的代码
    我写的是一个动态库,运行时报错,如果我将t1设成1970年以后的日期就没有问题!是不是CTime不支持1970.1.1日啊
      

  2.   

    看GetFieldValue(nNum,&time)里返回的time是否有问题
      

  3.   

    系统是采用UNIX时间表示法,即用自1970年1月1日开始   长度为4个字节。
    到了2038年就会有问题的
      

  4.   

    CTime是从早八点算起的
    CTime timea(1970,1,1,8,0,0);
      

  5.   

    1970–2038,
    用COleDataTime可以解决这个问题。