Ecco un test generico e felice di essere corretto se la mia matematica è errato. Nel mio caso, avevo solo bisogno di ottenere l'offset GMT per il fuso orario indipendentemente da dove fosse nel mondo.
int timezone;
TimeZoneInfo localZone = TimeZoneInfo.Local;
DateTime myTime = DateTime.Now;
bool isDayLight = TimeZoneInfo.Local.IsDaylightSavingTime(myTime);
if (isDayLight)
timezone = Math.Abs(localZone.BaseUtcOffset.Hours) + 1;
else
timezone = Math.Abs(localZone.BaseUtcOffset.Hours);
Debug.WriteLine("timezone is " + timezone);
Ho semplicemente trovato l'ora corrente e se era in periodo di risparmio luce giorno aggiunto +1 allo scostamento GMT.
Questo funziona con Visual Studio Express 2013
Perchè questo does't funziona bene con "E. Sud America Standard Time" per la specifica 'nuova DateTime (1995, 10, 15)' date? Non puoi testarlo qui https://dotnetfiddle.net/ilwIZu e nella storia della documentazione su https://pt.m.wikipedia.org/wiki/Lista_de_períodos_em_que_vigorou_o_horário_de_verão_no_Brasil 1995-10-15 è davvero una luce diurna –