如何使用闰秒以微秒为单位获取 UTC 时间
how to get UTC time in micro-seconds with leap seconds
如何在调整闰秒的情况下以微秒为单位获取UTC时间? 我正在使用boost::universal_clock()
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();
但这样做的结果与
std::chrono::time_point_cast<std::chrono::duration<int64_t, std::microseconds>>(
std::chrono::system_clock::now())
.time_since_epoch()
.count();
这似乎 boost 不是调整闰秒。但是当我使用 Cgmtime()
时,我得到不同的结果:
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
如何使用提升库来实现它?
使用 Howard Hinnant 的日期/时间库,这非常简单:
#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';
}
这是<chrono>
C++20添加的预览,但namespace date
。
utc_clock
计算自 1970-01-01 00:00:00 UTC 以来的时间,包括闰秒。clock_cast
将这个时钟的time_point
投射回system_clock
,只是为了进行比较。
这个程序只是为我输出:
2019-08-10 00:19:04.388788
1565396371388788µs
1565396344388788µs
需要一些安装。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 如何使用闰秒以微秒为单位获取 UTC 时间
- 如何在C++中以毫秒为单位获取今天的 UTC 午夜时间?
- 有没有办法在 C++ 中获取 uint64_t 日期的 UTC 纳秒
- 如何获取UTC时间
- 如何使用c++在linux中获取utc偏移量
- C++提升以 UTC 格式获取 unix 时间戳
- 如何获取从epoch到午夜的UTC秒数
- 获取当前时间作为W3C UTC时间字符串
- 在Mac(C++)上获取系统时区的UTC偏移量
- 如何从字符串中获取UTC偏移量