标签: c++-chrono

如何从 Unix 纪元开始以毫秒为单位创建时间点?

要创建当前时间的时间点,您可以使用:std::chrono::system_clock::now()

但是,我不知道如何创建自 UNIX 纪元以来给定毫秒数的时间点?

另外,std::chrono::time_point甚至是推荐的方式来及时表示“瞬间”?还是应该std::time_t优先考虑?

c++ time c++-chrono c++17 c++20

8
推荐指数
1
解决办法
5084
查看次数

未定义的引用`boost :: chrono :: system_clock :: now()' - Boost和cpp-netlib

我来这里是为了解决令我感到沮丧的情况.很多.首先,我在Windows上,我使用MinGW作为编译器(C++).

我在使用cpp-netlib和SSL(尝试POST到https站点)的程序中遇到了一些问题.我相信一切都井井有条,除了这一个不断躲避我的错误.
C:\boost_1_50_0\boost_1_50_0\stage\lib\libboost_thread-mgw46-mt-1_50.a(thread.o):thread.cpp|| undefined reference to 'boost::chrono::system_clock::now()'

我确信我已经链接到chrono,以及所有的.a libs BOOST_ROOT/stage/lib.我已经尝试重新排序,所以chrono在线程之前被链接.什么都没有帮助.我已经尝试BOOST_CHRONO_INLINED在我的IDE设置和多个conf.hpps中定义它仅使其成为标题,这没有帮助.

我很确定这是一个新手问题,我希望有人能给我一个快速解决方案.我匆匆写了这篇文章,因为我必须在某个地方,但如果你需要更多信息请说出来,我回家后可以更仔细地写.谢谢!

c++ boost boost-thread undefined-reference c++-chrono

7
推荐指数
1
解决办法
6531
查看次数

time_since_epoch 的 std::chrono 默认持续时间

如果我有以下时钟并使用它来计算自时钟纪元以来的滴答计数,那么这个计数实际上代表什么。

std::chrono::high_resolution_clock::now().time_since_epoch().count();
Run Code Online (Sandbox Code Playgroud)

例如,我刚刚运行了这个并得到了1389375799048790227. 这个数字是什么意思?是纳秒、微秒等吗?

c++ c++11 c++-chrono

7
推荐指数
2
解决办法
7821
查看次数

是否有类似于 Windows 上的 GetTickCount() 的 C++ 标准类/函数?

unsigned int Tick = GetTickCount();
Run Code Online (Sandbox Code Playgroud)

该代码仅在 Windows 上运行,但我想使用 C++ 标准库,以便它可以在其他地方运行。

我搜索过std::chrono,但找不到类似的功能GetTickCount()

你知道我应该使用什么吗std::chrono

c++ std gettickcount c++11 c++-chrono

7
推荐指数
1
解决办法
1万
查看次数

将chrono :: duration转换为字符串或C字符串

我正在尝试创建一个表(一个9乘11的数组),它存储一个函数通过几个排序函数所花费的时间.

我想我希望这个表是一个字符串.我目前无法解决如何转换chronostring并且无法在线查找任何资源.

我是否需要放弃表格的字符串输入,或者有没有办法将这些时间差异存储在字符串中?

for (int i = 0; i<8;i++) // sort 8 different arrays
{ 
    start = chrono::system_clock::now(); 
    //Sort Array Here
    end = chrono::system_clock::now();
    chrono::duration<double> elapsed_seconds = end-start;
    table[1][i] = string(elapsed_seconds)   // error: no matching conversion for functional style cast
}
Run Code Online (Sandbox Code Playgroud)

c++ string type-conversion c++-chrono

7
推荐指数
2
解决办法
7322
查看次数

如何检查duration_cast中的溢出

我需要将一种转换std::chrono::duration为另一种,但我需要知道何时无法进行这种转换,因为该值无法表示.

我没有在标准库中找到任何设施来检查这一点.该cppreference页面没有指定值是否超出范围会发生什么,只能从浮点到整数的转换可能是不确定的行为(在我来说,我需要从整数转换为整数).

c++ integer-overflow c++-chrono

7
推荐指数
1
解决办法
372
查看次数

std :: chrono有多准确?

std::chrono宣称它可以将结果报告到纳秒级别.在典型的x86_64 Linux或Windows机器上,人们期望它的准确度如何?例如,对于10 ns,10μs,10 ms和10 s的测量,误差条是多少?

c++ precision time c++-chrono

7
推荐指数
2
解决办法
2039
查看次数

自午夜以来的秒数

我编写了以下代码来获取自午夜以来的秒数。

但是,我对 C 时间日期结构并不擅长。是否有使用标准 C++ 库执行此操作的更简单方法?

// Get today's date
time_t aTime = time(NULL);

// Set the time to midnight
struct tm* tm = localtime(&aTime);
tm->tm_sec = 0;
tm->tm_min = 0;
tm->tm_hour = 0;
tm->tm_isdst = -1;
time_t midnight = mktime(tm);

// Create object representing now
struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);

// Number of seconds (now) since Epoch
const uint64_t nowSecsSinceEpoch = now.tv_sec;

// Number of seconds (now) since midnight = seconds (now) since Epoch minus seconds (at midnight) since …
Run Code Online (Sandbox Code Playgroud)

c++ c++-chrono

7
推荐指数
1
解决办法
331
查看次数

如何在不受系统时间变化影响的情况下测量经过的时间

我想以秒为单位测量经过的时间。用std::chrono::steady_clock我做。然而,它受到系统时间变化的影响。

稳定时钟不应该不受系统时间变化的影响吗?

我怎样才能做到这一点?

这是代码:

#include <iostream>
#include <chrono>
#include <time.h>

std::chrono::steady_clock::time_point t = std::chrono::steady_clock::now();

/* Change system time */
std::time_t tnow = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
tnow -= 20;
std::cout << "stime: " << stime(&tnow) << std::endl;
/********************************************************/

sleep(5);
std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now();
std::cout << "ELAPSED: " << std::chrono::duration_cast<std::chrono::seconds>(t2-t).count() << std::endl;
Run Code Online (Sandbox Code Playgroud)

结果如下:

stime: 0
ELAPSED: -15
Run Code Online (Sandbox Code Playgroud)

我想得到的是:

ELAPSED: 5
Run Code Online (Sandbox Code Playgroud)

编辑:

我添加了 C 标签,因为它似乎是一个内核(或板的构建根)错误。那么,如果没有,我怎么能做到这一点chrono?我的意思是,直接(无需观看系统时间更改)。

人们在chrono之前是如何生活的?

c++ c++-chrono

7
推荐指数
1
解决办法
205
查看次数

std::chrono 和缺少 (?) 对负闰秒的支持

C++20 添加了时区支持std::chrono,其中包括闰秒。然而,似乎只支持闰秒插入,而不支持闰秒删除,即负闰秒。(诚​​然,自 1972 年以来,只有正闰秒;但在过去几年中,这种趋势似乎已经逆转,未来几年似乎有可能出现负闰秒。)

从类的描述方式中可以明显看出这一点std::chrono::leap_second- 无法区分正闰秒和负闰秒。

是否知道为什么std::chrono不支持这种可能性?这是一种优化,还是某种错误?或者它已经支持但我错过了一些东西?

注意:MSVC 实现似乎有一个允许负闰秒的非标准功能。

c++ c++-chrono leap-second c++20

7
推荐指数
1
解决办法
415
查看次数