如何停止 C++20 std::chrono zoned_time 打印 GMT-4 而不是 EST?

问题描述

以前我使用了 Howard Hinnant 的“date.h”头库,但我最近切换到 C++20 的 std::chrono(这基本上是 Howard 的酷库的实现),但我无法将时区缩写打印在正常方式(例如纽约时间的 EST)。我得到的只是 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解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)