有没有一种简单的方法可以用C++; 我正在把一些PHP移植到C++。我们的一些数据库代码将时间值存储为unix时间戳*100 php包含的代码有点像这样 //PHP static function getTickTime() { return round(microtime(true)*100); }

有没有一种简单的方法可以用C++; 我正在把一些PHP移植到C++。我们的一些数据库代码将时间值存储为unix时间戳*100 php包含的代码有点像这样 //PHP static function getTickTime() { return round(microtime(true)*100); },c++,boost,timestamp,C++,Boost,Timestamp,我需要这样的东西: //C++ uint64_t getTickTime() { ptime Jan1st1970(date(1970, 1, 1)); ptime Now = microsecond_clock::local_time(); time_duration diff = Now - Jan1st1970; return static_cast<uint64_t>(diff.total_seconds()*100); } /C++ uint64_

我需要这样的东西:

//C++
uint64_t getTickTime()
{
   ptime Jan1st1970(date(1970, 1, 1));
   ptime Now = microsecond_clock::local_time();
   time_duration diff = Now - Jan1st1970;
   return static_cast<uint64_t>(diff.total_seconds()*100);
}
/C++
uint64_t getTickTime()
{
ptime 1970年1月1日(日期:1970年1月1日);
ptime Now=微秒时钟::本地时钟();
时间\持续时间差异=现在-1970年1月1日;
返回静态施法(差异总秒数()*100);
}
这样做明智吗?有更整洁的解决方案吗?
这段代码里有我看不到的讨厌的东西吗?(我想我对boost::date\u time的经验还不够丰富,不知道这些东西)

最简洁、最便携的解决方案是使用
time()
函数,该函数在
中定义,返回自Unix时代以来的秒数


如果确实使用boost,则需要
universal\u time()
,而不是
local\u time()
,因为纪元是以UTC指定的。

假设您在Unix上,则包括

如果在Windows上,没有好办法获得微秒分辨率,特别是因为它使用不同的历元。这个样品只需要我相信

FILETIME tim;
GetSystemTimeAsFileTime(&tim);
ULARGE_INTEGER ms;
ms.LowPart = tim.dwLowDateTime;
ms.HighPart = tim.dwHighDateTime;
return ms.QuadPart * 10 + <nanoseconds from January 1, 1609 to January 1, 1970>; // ms represents how many 100s of nanoseconds
FILETIME-tim;
GetSystemTimeAsFileTime(&tim);
ULARGE_整数ms;
ms.LowPart=tim.dwLowDateTime;
ms.HighPart=tim.dwHighDateTime;
返回ms.QuadPart*10+;//ms表示100纳秒的数量

可以将Daupic建议的解决方案修改为如下内容

uint64_t getTickTime()
{
  timeval tim;
  gettimeofday(&tim, NULL);
  return tim.tv_sec*100 + tim.tv_usec/10000;
}

我想不出比这更简洁的解决方案。

时间只会返回几秒钟。我至少需要百分之一秒。一天的时间对我可能有用。但并不像您所展示的那样,因为它只返回自上一秒以来的微秒数。我使用的是unixy系统,所以windows解决方案不好。
uint64_t getTickTime()
{
  timeval tim;
  gettimeofday(&tim, NULL);
  return tim.tv_sec*100 + tim.tv_usec/10000;
}