gpt4 book ai didi

c++ - 如何在 C++ 中将时间转换为 Windows 上的特定时区?

转载 作者:行者123 更新时间:2023-11-28 05:33:20 25 4
gpt4 key购买 nike

有一个 Unix 时间戳,我需要 localtime_s 的等价物,但我可以在其中传递时区。或者,我正在寻找一种方法来以编程方式为应用程序(而不是整个系统)更改时区,以便 localtime_s 返回正确的值。

奇怪的是,如果我在 shell 中将 TZ 环境变量设置为 GMT,然后启动我的应用程序,localtime_s 会返回 GMT 中的值。

我试过:

::SetEnvironmentVariable("TZ", "GMT");
tzset();

但不会改变后面调用localtime_s的结果

请注意,我正在使用 VS 2013 在 Windows 7 上运行该应用程序。

最佳答案

如果你愿意使用free, open-source 3rd party library ,这适用于 VS-2013。这里有很多关于如何使用它的例子:

https://github.com/HowardHinnant/date/wiki/Examples-and-Recipes

例如这里是如何输出纽约和芝加哥的当前时间:

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

int
main()
{
auto now = std::chrono::system_clock::now();
std::cout << "Current time in New York: "
<< date::make_zoned("America/New_York", now) << '\n';
std::cout << "Current time in Chicago : "
<< date::make_zoned("America/Chicago", now) << '\n';
}

这只是为我输出:

Current time in New York: 2016-08-12 10:36:24.670966 EDT
Current time in Chicago : 2016-08-12 09:36:24.670966 CDT

关于c++ - 如何在 C++ 中将时间转换为 Windows 上的特定时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38902003/

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