C++ time_t特定时区的 std::string

C++ time_t to std::string for a specific time zone

本文关键字:std 定时区 string time C++      更新时间:2023-10-16

在C++工作的Linux环境中,我需要将time_t值转换为不同时区的英语字符串表示形式。 例如1305750080 -> "2011-05-18 13:21:20 PST"。我能够使用 gmtime() 或 localtime() 与 strftime() 结合使用来为 GMT 和我的本地时区生成字符串。如何选择备用时区?

gmtime()这里的参考链接有一个示例,展示了一种非常简单的应用时区偏移量的方法。 当然,你可以创建一个带有枚举或其他东西的类,并想出一些更好的东西。

或者,boost::date_time有一个相当广泛的实现,适用于Linux和Windows。

我认为你可以用tzset做到这一点。

setenv("TZ", "EST5EDT", 1);
tzset();
您可以使用

putenvTZ环境变量更改为所需的任何时区,然后使用localtime或最好是localtime_r 。如果需要,您可以使用getenv缓存旧副本。