首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用闰秒在微秒内获得UTC时间

如何用闰秒在微秒内获得UTC时间
EN

Stack Overflow用户
提问于 2019-08-09 23:33:43
回答 1查看 220关注 0票数 1

如何在微秒内得到世界协调时间,并调整闰秒?我正在使用boost::universal_clock()

代码语言:javascript
复制
 boost::posix_time::time_duration utc_time =
      boost::posix_time::microsec_clock::universal_time() -
      boost::posix_time::from_time_t(0);
  int64_t total_microsec = utc_time.total_microseconds(); 

但结果是一样的

代码语言:javascript
复制
std::chrono::time_point_cast<std::chrono::duration<int64_t, std::microseconds>>(
             std::chrono::system_clock::now())
      .time_since_epoch()
      .count();

这似乎并不是在调整闰秒。然而,当我使用C gmtime()时,我得到了不同的结果:

代码语言:javascript
复制
  time_t mytime;

  struct tm *ptm;

  time(&mytime);  // Get local time in time_t

  ptm = gmtime(&mytime);  // Find out UTC time

  time_t utctime = mktime(ptm);  // Get UTC time as time_t

如何使用boost库实现它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-09 23:50:15

使用霍华德·辛纳特的日期/时间库非常容易:

代码语言:javascript
复制
#include "date/tz.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std;
    using namespace std::chrono;
    auto now = floor<microseconds>(utc_clock::now());
    cout << now << '\n';
    cout << now.time_since_epoch() << '\n';
    cout << clock_cast<system_clock>(now).time_since_epoch() << '\n';
}

这是的预览,但在namespace date中。

utc_clock计算自1970-01-01 :00:00 UTC的时间,包括闰秒.为了便于比较,clock_casttime_point从这个时钟转换回system_clock的时钟。

这个程序刚输出给我:

代码语言:javascript
复制
2019-08-10 00:19:04.388788
1565396371388788µs
1565396344388788µs

需要安装一些设备。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57438185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档