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

标签 c++ windows datetime

我们正在尝试使用 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/

相关文章:

android - 使用 Joda 时间将 12 小时时间转换为 24 小时时间

c++ - 我可以在没有 Mac 的情况下为 Mac 编程吗?

java - jgitblame 文件的某些行具有 null 提交 shas

windows - powershell参数PolicyStore和Confirm

Windows Azure 移动服务 C# 后端 - App_Data

python - 如何从sqlite中读取日期时间作为日期时间而不是Python中的字符串?

PHP - 两个日期之间的奇怪秒数差异(90000 而不是 86400)

c++ - 如何从给定的 QWidget 实例重新设计 Ui 文件

c++ - CUDA并行计算加速体积计算

c++ - Winsock简单客户端服务器,接收失败