【问题标题】:Get current date down to milliseconds [duplicate]将当前日期降至毫秒 [重复]
【发布时间】:2016-10-17 15:38:38
【问题描述】:

我需要以可打印格式获取当前 UTC 日期,在 c++11 中精确到毫秒。我需要它在 Windows 和 Linux 上运行,因此首选跨平台代码。如果这是不可能的,我可以编写两个单独的实现。

这是我尝试过的:

std::chrono::time_point<std::chrono::high_resolution_clock> time = std::chrono::system_clock::now();
std::time_t tt = std::chrono::high_resolution_clock::to_time_t(time);

struct tm* utc = nullptr;
gmtime_s(utc, &tt);

char buffer[256];
std::strftime(buffer, sizeof(buffer), "%Y-%m-%dT-%H:%M:%S. %MILLESECONDS???, utc);

尽管您可以看到这并没有将它降低到毫秒。如果我需要,我可以自己格式化字符串,只要我能以某种方式获得毫秒值。

【问题讨论】:

标签: c++ c++11 chrono


【解决方案1】:

time_t 仅包含秒数,因此您可以使用 std::chrono 函数获得更高的精度:

#include <iostream>
#include <chrono>

int main() 
{
    typedef std::chrono::system_clock clock_type;

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

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

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 2014-10-12
    • 2015-07-30
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 2020-09-08
    相关资源
    最近更新 更多