Obter informações sobre horário de verão a partir TimeZoneInfo

votos
2

Eu preciso recuperar a informação do horário de verão (data de início e data final) a partir de um fuso horário.

Você pode fazer isso com a TimeZone classe mas está obsoleto e só retorna o fuso horário do computador / servidor.

Você não tem essas informações na TimeZoneInfo classe, assim como obtê-los?

Ex:

var tzi = TimeZoneInfo.FindSystemTimeZoneById(Eastern Standard Time);
Console.WriteLine(tzi.DaylightName); // I have the name but no info

var tz = TimeZone.CurrentTimeZone;
DaylightTime dst = tz.GetDaylightChanges(DateTime.UtcNow.Year);
Console.WriteLine($DST: start {dst.Start} - end {dst.End}); // that's what I need but for a given timezone
Publicado 15/08/2018 em 18:27
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Como você observou, TimeZoneInforealmente não se expor muito directamente que não conversões de um único instante no tempo. As regras para qualquer fuso horário estão disponíveis (via TimeZoneInfo.GetAdjustmentRules, mas eles são difíceis de trabalhar com precisão.

O projeto Noda Tempo faz expor esta informação: você perguntar a um fuso horário para a seqüência de "Intervalos de zona" usados entre um ponto de partida e um ponto final (via DateTimeZone.ZoneIntervals). Não pode haver outros que em transições e fora de DST; padrão de um deslocamento de fuso horário pode mudar, por exemplo. Os intervalos zona retornou cobrir o intervalo de tempo que você pedir.

Noda Tempo é principalmente projetado para trabalhar com os fusos horários IANA, mas você pode usar os fusos horários do Windows também na versão estrutura completa NET (não na versão .NET núcleo no momento).

Deixe-me saber se você gostaria de um exemplo de código - se você não pode usar Noda Tempo, não faz muito sentido para trabalhar até o exemplo.

Respondeu 15/08/2018 em 18:34
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more