我正在使用以下代码段来计算utc偏移量,但我发现有时会返回错误的结果:
double DateTime::getUTCOffset()
{
time_t currtime;
struct tm * timeinfo;
time ( &currtime );
timeinfo = gmtime ( &currtime );
time_t utc = mktime( timeinfo );
timeinfo = localtime ( &currtime );
time_t local = mktime( timeinfo );
// Get offset in hours from UTC
double offsetFromUTC = ((difftime(local, utc) / HOUR_IN_SECONDS) );
// Adjust for DST
if (timeinfo->tm_isdst)
{
offsetFromUTC += 1;
}
return offsetFromUTC;
}
Run Code Online (Sandbox Code Playgroud)
%90%的时候它是正确的,计算utc偏移量的最佳方法是什么?
我认为该tm_gmtoff字段应该在您的系统上可用.
std::time_t current_time;
std::time(¤t_time);
struct std::tm *timeinfo = std::localtime(¤t_time);
long offset = timeinfo->tm_gmtoff;
Run Code Online (Sandbox Code Playgroud)