うわー、私は自分の C++ を知っていると思っていましたが、これは奇妙です
この関数は unsigned int を返すので、負の数が返されることは決してないと思いました。
この関数は、UTC から何時間進んでいるか遅れているかを判断します。私はオーストラリアのシドニーにいるので、+10 GMT です。つまり、UTC = LocalTime + (-10) です。したがって、GetTimeZoneInformation は私が -10 であると正しく判断します。
しかし、私の関数は unsigned int を返すので、-10 ではなく 10 を返すべきではありませんか?
unsigned int getTimeZoneBias()
{
TIME_ZONE_INFORMATION tzInfo;
DWORD res = GetTimeZoneInformation( &tzInfo );
if ( res == TIME_ZONE_ID_INVALID )
{
return (INT_MAX/2);
}
return (unsigned int(tzInfo.Bias / 60)); // convert from minutes to hours
}
TCHAR ch[200];
_stprintf( ch, _T("A: %d\n"), getTimeZoneBias()); // this prints out A: -10
debugLog += _T("Bias: ") + tstring(ch) + _T("\r\n");