簡體   English   中英

如何使用 chrono 以 UTC 格式獲取系統時間

[英]How to get system time in UTC format using chrono

我正在嘗試使用 chrono 以 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();
    
}

以下是如何在 c++11/14/17中使用 C++20 <chrono>的免費、開源、僅標頭預覽

#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';
}

使用:

clang++ -std=c++17 test.cpp -I../date/include

這對我來說只是 output:

2021-03-10 21:49:51.861588 UTC

您可以根據需要使用這些格式化標志對其進行格式化。

如果你被 C++11 - C++17 困住,你可以使用std::gmtime ,它“將自紀元以來的給定時間轉換為std::time_t值到日歷時間,以協調世界時 (UTC) 表示”,然后std::put_time到按照你想要的方式格式化它。

#include <chrono>
#include <ctime>
#include <iomanip>
#include <sstream>

std::string GetSystemTime() {
    auto now = std::chrono::system_clock::now();
    std::time_t currentTime = std::chrono::system_clock::to_time_t(now);

    std::ostringstream os;
    os << std::put_time(gmtime(&currentTime), "%F %T");

    return os.str();
}

演示

關於std::gmtime的注意事項:這個 function 可能不是線程安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM