自己写函数来分析的话,那效率也太低了.
MSDN查了半天也没有结果,请教各位了!PS:只需年月日即可

解决方案 »

  1.   

    CTime time1(CTime::GetCurrentTime());
    CTime time2(CTime::GetCurrentTime());
    CSpanTime spantime = time1 - time2;
      

  2.   

    把SYSTEMTIME类型转成CTime,然后在减。SYSTEMTIME sysTime1,sysTime2;
    sysTime1 = ....;
    sysTime2 = ....;CTime time1(sysTime1);
    CTime time2(sysTime2);
    CSpanTime spantime = time1 - time2;
      

  3.   

    用GetLocalTimer()吧,或者GetCurrentTime()得到的值再用localtime()转换一下。
    如果你要研究转换的源码,那就debug进去吧,比自己写省力多了。
      

  4.   

    靠,没有注意看题,被第一个回答的家伙误导了。
    SYSTEMTIME是个结构,减相应的项就可以了
    WORD result_year = systime1.mYear - systime2.mYear;
    ...
      

  5.   

    谢谢各位,不用MFC的话,有没有办法?
      

  6.   

    long find;
    CString ss;
    CTime t;

    ss.Format("%d",t); 
    find = atol(ss);这样转化为整型,那就爱做什么都可以了
      

  7.   


       声明两个SYSTEMTIME 变量,st1,st2;分别赋予值后,直接比较其年份
    st1.wYear;再判断其是否闰年,最后在根据各自的wMonth就自然知道
    st1.wDay-st2.wDay 的值了。
       去看看SYSTEMTIME 结构吧,就什么都明白了。
      

  8.   

    我知道你不想用MFC
    SYSTEMTIME的相减问题我也遇到过,曾经自己写了一个函数,但显然你自己还要花精力测试它的正确性。还有一个方法不用自己写,就是不用SYSTEMTIME,用标准c库的time_t和struct tm,SYSTEMTIME和struct tm基本是一样的,所以说微软是个恶毒小人方法如下例:time_t sys_time , ret_time;
    struct tm *local_time ;//系统时刻取得
    time( &sys_time );  
    local_time = localtime( &sys_time );//1000天以前的时刻取得
    local_time->tm_mday = local_time->tm_mday - 1000;
    ret_time = mktime( local_time );//注意struct tm结构里年,月,日,小时,分,秒是mktime时的有效值,其他如星期几等不起作用