如何使用 chrono 获取 UTC 格式的系统时间

Alo*_*lok 3 c++ c++14 c++17

我正在尝试使用 chrono.txt 查找 UTC 格式的系统时间。我认为下面的程序只给我当地时间,请有人帮帮我吗?

#include <iostream>
#include <chrono>
#include <ctime>  

auto GetSystemTime() -> uint8_t * {
    auto now = std::chrono::system_clock::now();
    std::time_t currentTime = std::chrono::system_clock::to_time_t(now);
    return reinterpret_cast<uint8_t *>(std::ctime(&currentTime));
}

int main()
{

   std::cout << GetSystemTime();
    
}
Run Code Online (Sandbox Code Playgroud)

How*_*ant 6

以下是如何将这个免费、开源、仅包含头文件的 C++20 预览版<chrono>与 c++11/14/17 结合使用:

#include "date/date.h"
#include <chrono>
#include <iostream>

auto
GetSystemTime()
{
    return date::format("%F %T %Z", std::chrono::system_clock::now());
}

int
main()
{
    std::cout << GetSystemTime() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

使用:

clang++ -std=c++17 test.cpp -I../date/include
Run Code Online (Sandbox Code Playgroud)

这只是我的输出:

2021-03-10 21:49:51.861588 UTC
Run Code Online (Sandbox Code Playgroud)

您可以使用这些格式化标志将其格式化为您想要的格式。