在ubuntu中等效的GetTimeZoneInformation?

时间:2011-08-16 07:36:39

标签: c++

我在Windows中使用GetTimeZoneInformation但是无法在linux中找到任何等效内容。 有什么想法??

3 个答案:

答案 0 :(得分:2)

我在经过一些调试时间相关的结构之后想出来了。

最好使用struct tm * gmtime ( const time_t * timer )来提供UTC时间。

可以使用tzset()tzname[0]来获取时区信息。

答案 1 :(得分:2)

您可以在Unix上使用以下内容:

std::string LocalTimeZone()
{
    time_t  now = time(NULL);
    struct tm tnow = *localtime(&now);
    std::string tz = tnow.tm_zone;
    std::cout << "Local timezone: " << tz << std::endl; 

    char    buff[100];
    strftime( buff, sizeof buff, "%a %b %d %Y %T %Z%z", &tnow );

    std::vector<std::string> vec;
    const std::string s(buff);
    boost::split(vec, s, boost::is_any_of(" "));

    std::vector<std::string>::iterator i = vec.end();
    return *--i;
}

根据主机的系统设置,它将给出当前时区。

答案 2 :(得分:1)

Boost包含 Boost.Date_Time ,其中包含时区数据库。你也可以使用它。