微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何停止 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 举报,一经查实,本站将立刻删除。