c++ - 以纳秒为单位的 C++ 当前系统时间为长整数,以便发送 influxdb
问题描述
我需要以纳秒为单位获取系统时间并将其作为时间戳发送到 influxdb。我知道
std::chrono::high_resolution_clock::now()
以 nanosecodns 给出当前系统时间,但我无法将其转换为原始类型。
当我通过下面的代码时,我在数据库中看到类似 1970-01-09T... 的内容
std::chrono::high_resolution_clock::now().time_since_epoch().count()
解决方案
您需要使用std::chrono::system_clock
而不是high_resolution_clock
. 仅system_clock
可靠地测量自 1970 年以来的时间(这是 influxdb 所期望的)。
其次,system_clock
不能保证以纳秒为单位测量时间,但您可以对此进行纠正。
以下是如何让您的平台对自 1970-01-01 00:00:00 UTC 以来的纳秒数进行最佳估计(不包括闰秒,这是正常且可以的),并将其放入有符号的 64 位整数类型:
using namespace std::chrono;
long long t = time_point_cast<nanoseconds>(system_clock::now()).time_since_epoch().count();
推荐阅读
- javascript - 从 chrome.storage.local 中检索对象并使用它来更改当前页面的 CSS
- java - 子字符串大文本的更好方法是什么?
- jquery - 添加带有字段名称的 ParsleyJS 自定义消息
- tableau-api - 在 Tableau 中为筛选的分组数据创建计算字段
- javascript - 由于引用错误,未找到函数名称
- scala - 与 Scala 类型不匹配
- sql - 如何从单列中获取值的组合?
- javascript - 如何在rails link_to中的form-data中传递查询参数而不是将其附加到url中?
- php - PHP递归调用生成数组
- rxjs - 如何在 RxJs 中合并两个流等等?