C ++ boost以UTC格式获取unix时间戳

时间:2016-02-21 21:28:16

标签: c++ datetime boost

你好我试图在UTC中使用提升以来的时间过去但似乎是microsec_clock :: universal_time();没有返回UTC时间,而是返回PC时区的时间。

如何使用boost获取UTC的当前时间(以毫秒为单位)?

以下是我使用

的代码
const long long unix_timestmap_now()
{ 
   ptime time_t_epoch(date(1970, 1, 1));
   ptime now = microsec_clock::universal_time();
   time_duration diff = now - time_t_epoch;
   return  diff.total_milliseconds();;
}

1 个答案:

答案 0 :(得分:2)

为什么要使用提升?所有需要的(指的是时间)都转移到了C ++中的STL。

重要的是 - 不是每个人都知道“unix时间戳”一次对整个世界都是一样的,即如果在俄罗斯的服务器上检查时间,例如在美国的服务器上,则值将是是相同的(当然在两个服务器正确的时间正确的情况下),它的变化只是在形式的人可以理解的变化,取决于服务器设置。当然,如果你没有设定时区,反向priobrazovanie也会有所不同。

cpp.sh

上进行测试
#include <iostream>
#include <chrono>

int main ()
{
  using namespace std::chrono;

  system_clock::time_point tp = system_clock::now();
  system_clock::duration dtn = tp.time_since_epoch();

  std::cout << "current time since epoch, expressed in:" << std::endl;
   std::cout << "milliseconds: " << duration_cast<milliseconds>(dtn).count();
  std::cout << std::endl;

  return 0;
}