gpt4 book ai didi

c++ - Windows下如何获取时区缩写

转载 作者:可可西里 更新时间:2023-11-01 13:42:25 27 4
gpt4 key购买 nike

我们正在尝试使用 strftimestd::tm 获取时区:

char timezone[50];
strftime(timezone, sizeof(timezone), "%Z", &timeCreated);

在 iOS 上,我们得到我们想要的“EST”。但在 Windows 上,我们得到“东部夏令时”。有人知道如何以缩写形式始终如一地获取 C++ 中的当前时区吗?

我考虑通过简单地挑选每个单词中的第一个字符来从时区的全名中制作缩写。但是我检查了 abbreviations 的列表并注意我们可以有像这样的时区“Chuuk Time”并缩写为“CHUT”。这使得手动调整成为不可能。


与问题不同:Windows Timezone and their abbreviations?我不需要所有时区和缩写的完整列表。但是相反,我需要一种系统的方法来使用例如 strftime 当前时区。我希望他们使用系统的当前时区和当前本地。

最佳答案

使用这个 free, open-source library已移植到 VS-2013 及更高版本:

#include "tz.h"
#include <iostream>

int
main()
{
using namespace std::chrono;
using namespace date;
std::cout << format("%Z\n", make_zoned(current_zone(), system_clock::now()));
}

这只是为我输出:

EDT

Fully documented.

这个库使用 IANA timezone database ,并在调用 current_zone() 时,将当前 Windows 时区转换为适当的 IANA timezone .

关于c++ - Windows下如何获取时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com