首页 > 解决方案 > 如何使用 Howardhinnant 的 c++ 日期库格式化 UTC 时间字符串

问题描述

有人可以帮助我使用 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);

我不得不硬编码 HH MM & SS 字段。我确信有一种简单的方法可以在这个库中格式化自定义日期/时间。任何帮助表示赞赏。

标签: c++datechrono

解决方案


如果您使用的是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);

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


推荐阅读