DateTime não sabe seu deslocamento de fuso horário. Não existe um método integrado para retornar o deslocamento ou o nome do fuso horário (por exemplo, EAT, CEST, EST etc).
Como sugerido por outros, você pode converter sua data para UTC:
DateTime localtime = new DateTime.Now;
var utctime = localtime.ToUniversalTime();
e então apenas calcule a diferença:
TimeSpan difference = localtime - utctime;
Além disso, você pode converter uma hora para outra usando o DateTimeOffset:
DateTimeOffset targetTime = DateTimeOffset.Now.ToOffset(new TimeSpan(5, 30, 0));
Mas isso é um tipo de compactação com perdas - o deslocamento por si só não pode dizer qual fuso horário é, pois dois países diferentes podem estar em fusos horários diferentes e ter o mesmo tempo apenas durante parte do ano (por exemplo, África do Sul e Europa). Além disso, esteja ciente de que o horário de verão pode ser introduzido em datas diferentes (EST vs CET - uma diferença de 3 semanas).
Você pode obter o nome do fuso horário do sistema local usando a classe TimeZoneInfo:
TimeZoneInfo localZone = TimeZoneInfo.Local;
localZone.IsDaylightSavingTime(localtime) ? localZone.DaylightName : localZone.StandardName
Concordo com Gerrie Schenck, leia o artigo que ele sugeriu.