我首先取了本机时间:
CTime t = CTime::GetCurrentTime();
char szTime[14];
sprintf(szTime,"%04d%02d%02d%02d%02d%02d",t.GetYear(),t.GetMonth(),t.GetDay(),t.GetHour(),t.GetMinute(),t.GetSecond());然后又从服务器得到时间:
放在char szTimeDate[14];两个时间格式与位数都一样,现在我想求这两个时间的时间差,求得的结果以毫秒为单位,不知道应该怎么写,请高手们详细指点,我是新手!!

解决方案 »

  1.   

    毫秒就不用想了,你得到的那两个时间也只是精确到秒而已
    你可以使用COleDataTime的ParseDateTime, 然后两个相减,得到COleDateTimeSpan
    但前提是你要把你的字符串转成比较标准的形式, 比如
    "2007-08-08 15:40:00"这个没啥好说的,就是一些字符串操作
      

  2.   

    CTime得不到毫秒的。
    试试QueryPerformanceFrequency()
      

  3.   

    CTime多麻烦,直接用time去秒数相减
      

  4.   

    服务器那端也用time取了秒数转化成四个字节的字符串,传过来再转化成long相减
      

  5.   

    不行,格式不能变,我现在就是想知道这样一个结果:char szTime[14];
    char szTimeDate[14];
    这两个变量里面放着两个例如“20070808162406”和“20070706052516”两个时间,我就是想得到这两个时间的时间差,单位秒或者毫秒都可以,会的高手请详细写出来,谢谢!!
      

  6.   

    void
    CookTime(TCHAR * tszDest, const TCHAR * tszSrc)
    {
    tszDest[4] = _T('-');
    tszDest[7] = _T('-');
    tszDest[10] = _T(' ');
    tszDest[13] = _T(':');
    tszDest[16] = _T(':'); for (long i = 0; i < 20; ++i)
    {
    if (i == 4 || 
    i == 7 ||
    i == 10 ||
    i == 13 ||
    i == 16)
    {
    continue;
    }
    tszDest[i] = *tszSrc++;
    }}__int64 
    CalcSeconds(TCHAR * pLocal, TCHAR * pSys)
    {
    COleDateTime tmLocal, tmSys;
    TCHAR tszCookTime[32] = {0}; CookTime(tszCookTime, pLocal);
    tmLocal.ParseDateTime(tszCookTime);
    CookTime(tszCookTime, pSys);
    tmSys.ParseDateTime(tszCookTime); COleDateTimeSpan tmSpan = tmSys - tmLocal;
    return (__int64)tmSpan.GetTotalSeconds();
    }刚写的,测试通过