以前我使用 Howard Hinnant 的“date.h”头库,但我最近切换到 C++20 的 std::chrono(这基本上是 Howard 酷库的实现),但我无法以正常方式打印时区缩写(例如纽约时间的东部标准时间)。我得到的只是 GMT-4(目前我们处于夏令时)。
我正在将 MSVC 与 Visual Studio 2022 PRE 一起使用,并且我读到 Microsoft 没有使用完整的 IANA 数据库,而是使用 Windows 已经下载的称为 ICU 的东西。这可能是缺少缩写的原因吗?
这是我正在使用的代码:
auto tm = std::chrono::system_clock::now();
std::cout << std::format("{:%X %Z}", std::chrono::zoned_time("America/New_York", tm));
对我来说,在新加坡的 22:55:52,它会打印 10:55:52 GMT-4 而不是 10:55:52 EST,这正是我想要的。
有谁知道如何使用标准 C++20 在 Microsoft Visual Studio 上解决这个问题?