球一段代码,把当前系统的时间保存在字符串中,精确到毫秒 形式类似于20110811151922005

解决方案 »

  1.   

    在定时器中用GetLocalTime就行了,或者用CTime T =CTime::GetCurrentTime(); 也可以得到当前时间,转成字符串格式你可以用GetDay() 得到 CTime持有的"天" ,GetMonth() 得到月,GetYear() 得到年
      

  2.   

    到毫秒基本上不可能的,Window并不是一个实时操作系统。
      

  3.   

    GetLocalTime
    _SYSTEMTIME::wMilliseconds
      

  4.   

    SYSTEMTIME now;
    GetSystemTime(&now);
      

  5.   

    正如楼上各位说的,无法精确到毫秒,GetLocalTime()之类的函数得到的毫秒都是以时间片为误差的,真正能精确到毫秒的函数如timeGetTime()得到的又不是时间日期,只是一个相对值。因此,我是这样想的,这个毫秒即使你得到了也没有和别的机器参考的价值,不妨就用着两个函数进行一个互补。
    首先,用GetLocalTime()得到日期,然后,用timeGetTime()得到从系统启动所经过的毫秒数,根据后者自己计算现在的日期,时间,这样在整个运行过程中的毫秒数之间是同一参考标准,可认为是精确的。
    另外必须使用timePeriodBegin(1)和timePeriodEnd(1)来设置才可将timeGetTime()精确到1毫秒,当然也可使用高精度的Queryperformancecounter()来获得更精确的时间,但对这个问题没什么实际意义
      

  6.   

    sqlite代码中的片段:
    #if SQLITE_OS_WINCE
      SYSTEMTIME time;
      GetSystemTime(&time);
      /* if SystemTimeToFileTime() fails, it returns zero. */
      if (!SystemTimeToFileTime(&time,&ft)){
        return 1;
      }
    #else
      GetSystemTimeAsFileTime( &ft );
    #endif
      UNUSED_PARAMETER(pVfs);
      timeW = (((sqlite3_int64)ft.dwHighDateTime)*max32BitValue) + (sqlite3_int64)ft.dwLowDateTime;
      timeF = timeW % ntuPerDay;          /* fractional days (100-nanoseconds) */
      timeW = timeW / ntuPerDay;          /* whole days */
      timeW = timeW + 2305813;            /* add whole days (from 2305813.5) */
      timeF = timeF + ntuPerHalfDay;      /* add half a day (from 2305813.5) */
      timeW = timeW + (timeF/ntuPerDay);  /* add whole day if half day made one */
      timeF = timeF % ntuPerDay;          /* compute new fractional days */
      *prNow = (double)timeW + ((double)timeF / (double)ntuPerDay);
    不过这个有意义吗?