【问题标题】:__time32_t time precision?__time32_t 时间精度?
【发布时间】:2011-04-15 12:42:06
【问题描述】:

我正在使用一个 api,它使用两个 __time32_t 对象打开数据库的游标,指定查询的开始和结束时间。

__time32_t 是否具有亚秒(毫秒)时间精度? MSDN 有点不清楚。

我拥有的 time32_t 对象是这样做的:

currentET-=.1;

我希望将 currentET 内的时间减去 10 毫秒,但它所做的只是减去一整秒,就好像我这样做了:

currentET-=1;

我怎样才能将这个精度恢复到 time32_t 对象中?

【问题讨论】:

    标签: c++ windows time crt


    【解决方案1】:

    __time32_t 只是一个整数类型 - 除了整数之外,它没有任何特定的分辨率。 典型函数 __time32_t 使用时确实有 1 秒的分辨率。

    【讨论】:

      【解决方案2】:

      这是一个生成亚秒级精确时间输出的示例。原谅使用 TCHAR 宏...旧代码库。

      void getCurrTimeString(TCHAR* mytime)
      {
          _timeb myTime;
          struct tm * timeinfo;
      
          _ftime64_s( &myTime );
          time_t rawtime = myTime.time;
          unsigned short myMillis = myTime.millitm;
          timeinfo = localtime ( &rawtime );
          _stprintf(mytime,_T("%d-%02d-%02dT%02d:%02d:%02d.%03d"),
              (1900+timeinfo->tm_year),
              (timeinfo->tm_mon+1),
              timeinfo->tm_mday,
              timeinfo->tm_hour,
              timeinfo->tm_min,
              timeinfo->tm_sec,
              myMillis);
      }
      

      【讨论】:

      • 如何使用它来接收 __time32_t 对象?
      • @mattk 您不能以所需的精度使用__time32_t(可以对此进行更正),而_timeb 是我能看到的唯一方法。您应该能够用现有的__time32_t 对象替换我使用的time_t rawtime。在这种情况下,您还需要将_localtime32 替换为localtime。另见:msdn.microsoft.com/en-us/library/95e68951%28VS.80%29.aspx
      猜你喜欢
      • 2022-12-12
      • 2018-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      相关资源
      最近更新 更多