如何使用 howardhinnant 的 C++ 日期库格式化 UTC 时间字符串

joh*_*co3 3 c++ date c++-chrono

有人可以帮助我使用 Howard Hinnant 优秀的日期/时间库格式化日期字符串吗?我正在尝试输出当前时间的 UTC 日期。所需的日期/时间格式是祖鲁时间:

“2018-11-01T15:32:56Z” - 即“YYYY-MM-DDTHH:MM:SSZ” -

到目前为止,使用霍华德的文档,我能够得到部分结果,如下所示:

const auto today = floor<days>(system_clock::now());
auto dateTimeString = std::format("{}T{:02}:{:02}:{:02}Z", today, 15, 20, 59);
Run Code Online (Sandbox Code Playgroud)

我必须对 HH MM 和 SS 字段进行硬编码。我确信在这个库中有一种简单的方法来格式化自定义日期/时间。任何帮助表示赞赏。

How*_*ant 6

如果您使用的是std::format,那么您正在使用 C++20,而不是Howard Hinnant 的日期/时间库。尽管后者是 C++20 chrono 库的基础。

您的代码应如下所示:

const auto today = floor<seconds>(system_clock::now());
auto dateTimeString = std::format("{:%FT%T}Z", today);
Run Code Online (Sandbox Code Playgroud)

该变量today包含精度为秒的 UTC 时间点。然后{:%FT%T}格式化其中的 YYYY-MM-DDTHH:MM:SS 部分(%F用于日期和%T时间)。