C++ 当前系统时间(以纳秒为单位)作为长整数以发送 influxdb
C++ current system time in nanoseconds as long integer in order to send influxdb
我需要以纳秒为单位获取系统时间并将其作为时间戳发送到 influxdb。我知道
std::chrono::high_resolution_clock::now()
以纳秒为单位给出当前系统时间,但我无法将其转换为原始类型。
当我传递下面的代码时,我在数据库中看到类似 1970-01-09T... 的内容
std::chrono::high_resolution_clock::now().time_since_epoch().count()
now()
returns你一个time_point。您需要将其转换为持续时间才能获得纳秒数。
可能你要找的是纪元以来的时间,所以你可以这样做
std::chrono::nanoseconds ns = std::chrono::high_resolution_clock::now().time_since_epoch();
unsigned long result = ns.count();
您需要使用 std::chrono::system_clock
而不是 high_resolution_clock
。只有 system_clock
可靠地测量自 1970 年以来的时间(这正是 influxdb 所期望的)。
其次,system_clock
不能保证以纳秒为单位测量时间,但您可以对此进行更正。
以下是如何让您的平台对自 1970 年 1 月 1 日以来的纳秒数进行最佳估计 00:00:00 UTC(不包括闰秒,这是正常且正常的),并将其放入带符号的 64 中位整数类型:
using namespace std::chrono;
long long t = time_point_cast<nanoseconds>(system_clock::now()).time_since_epoch().count();
我需要以纳秒为单位获取系统时间并将其作为时间戳发送到 influxdb。我知道
std::chrono::high_resolution_clock::now()
以纳秒为单位给出当前系统时间,但我无法将其转换为原始类型。
当我传递下面的代码时,我在数据库中看到类似 1970-01-09T... 的内容
std::chrono::high_resolution_clock::now().time_since_epoch().count()
now()
returns你一个time_point。您需要将其转换为持续时间才能获得纳秒数。
可能你要找的是纪元以来的时间,所以你可以这样做
std::chrono::nanoseconds ns = std::chrono::high_resolution_clock::now().time_since_epoch();
unsigned long result = ns.count();
您需要使用 std::chrono::system_clock
而不是 high_resolution_clock
。只有 system_clock
可靠地测量自 1970 年以来的时间(这正是 influxdb 所期望的)。
其次,system_clock
不能保证以纳秒为单位测量时间,但您可以对此进行更正。
以下是如何让您的平台对自 1970 年 1 月 1 日以来的纳秒数进行最佳估计 00:00:00 UTC(不包括闰秒,这是正常且正常的),并将其放入带符号的 64 中位整数类型:
using namespace std::chrono;
long long t = time_point_cast<nanoseconds>(system_clock::now()).time_since_epoch().count();