我在Windows中使用GetTimeZoneInformation
但是无法在linux中找到任何等效内容。
有什么想法??
答案 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 ,其中包含时区数据库。你也可以使用它。