次のコード セグメントを使用して 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;
}
90% の確率で正しいですが、utc オフセットを計算する最良の方法は何ですか?