c++ - 获取毫秒部分时间

标签 c++

我需要从计时器获取毫秒数

    // get timer part
    time_t timer = time(NULL);
    struct tm now = *localtime( &timer );
    char timestamp[256];

    // format date time
    strftime(timestamp, sizeof(timestamp), "%Y-%m-%d_%H.%M.%S", &now);

我想在 C# 中变成这样:

DateTime.Now.ToString("yyyy-MM-dd_HH.mm.ss.ff")

我尝试使用 %f 或 %F 但它确实适用于 C++。如何从 tm 获得毫秒的 %f?

最佳答案

#include <chrono>

typedef std::chrono::system_clock Clock;

auto now = Clock::now();
auto seconds = std::chrono::time_point_cast<std::chrono::seconds>(now);
auto fraction = now - seconds;
time_t cnow = Clock::to_time_t(now);

然后您可以以秒精度打印 time_t,然后打印分数代表的任何内容。可能是毫秒、微秒或其他。具体获取毫秒数:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(fraction);
std::cout << milliseconds.count() << '\n';

关于c++ - 获取毫秒部分时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654258/

相关文章:

c++ - ZeroMq:打开的文件太多。同一对象上的 fd 使用量持续增长

c++ - 需要一个好的方法来在 Google Test 中测试工厂类

c++ - std::array 的演绎指南

c++ - 对指针列表进行排序 C++ - 没有匹配的函数错误

c++ - 为什么我的 vector 会丢弃它的数据?

c++ - RoundRect 的圆角边缘不平滑

c++ - 如何从(通常)返回引用(对成员数据)的成员函数返回常量

c++ - Trec_eval 使用 cygwin 出错

c++ - 减少以下代码中的时间

c++ - 选择多个表 MySQL