0

我正在转换一个只能在 Windows 机器上编译的 C++ 项目,因为它使用 Microsoft C++ 库。该功能是否有任何替代方案,可_get_timezone在 Ubuntu 12.10 机器上编译?

MSDN 上的_get_timezone文档

4

2 回答 2

2

我想我自己计算一下,使用标准函数:

#include <time.h>

namespace time_util { 
double get_gmt_offset() { 
    time_t now = time(NULL);

    struct tm *gm = gmtime(&now);
    time_t gmt = mktime(gm);

    struct tm *loc = localtime(&now);
    time_t local = mktime(loc);

    return difftime(local, gmt);
}
}

我没有并排测试它们以确定,但这会返回我期望 _get_timezone 返回的内容(例如,对我来说,它返回 -25200,它可以工作到 UTC-7 小时)。

您可能需要/想要“摆弄”一些事情的一个地方是处理tm_isdst- 我没有仔细观察_get_timezone它是否考虑到这一点。

于 2013-04-09T20:11:36.043 回答
1

Linux 的替代方案_get_timezone不是函数,而只是timezone变量,定义在time.h

extern long timezone;
于 2016-06-22T11:06:49.710 回答