Formato UTC x Horário de Verão.

Descrição:

Qual é o comportamento do Elipse Plant Manager no horário de verão? Por exemplo, se às 00:00 o servidor do EPM retorna para 23:00 do dia anterior, o que acontece com os dados das 23 horas anteriores: são sobrescritos ou duplicados?

Solução:

O EPM sempre armazena em formato UTC. Neste formato, os dados são contínuos, e o horário de verão é desconsiderado. Exemplo:

      23:55 antes do horário de verão (GMT-0300) => 02:55 UTC
      23:59 antes do horário de verão (GMT-0300) => 02:59 UTC
      01:01 começou o horário de verão (GMT-0200) => 03:01 UTC

Perceba que apenas o primeiro horário é alterado; o segundo horário (UTC) continua inalterado. Desta forma, não existem dados duplicados ou sobrescritos.

Quando uma consulta é feita no EPM Studio, por exemplo (ou no Addin para o Excel), os dados recebidos estão em UTC, que é automaticamente convertido para o LocalTime. O ideal é o aplicativo cliente (aquele que fez a consulta) converta o horário para o seu próprio LocalTime.

Caso uma Function do EPM seja executada pelo E3, ela vai usar o mesmo TimeZone indicado no parâmetro @timeZoneOffset. Se o valor passado for -3, é como se estivesse usando o horário oficial; se passar -2, é como se estivesse usando o horário de verão.

Caso queira consultar das 23:30 às 00:20 (e 00:20 no horário de verão é23:20), então a Function seria -3, 23:30, 00:20 (@timeZoneOffset, @startTime@endTime, respectivamente). Ela receberá todos os valores no horário normal (23:30 a 00:20 corrido), portanto será desconsiderado o horário de verão. Se continuar solicitando com -3, o horário oficial será recebido em vez do de verão. Por isso, o UTC deve sempre ser utilizado.

Ao usar a Function do EPM (ou as Stored Procedures), o usuário deverá estar atento ao parâmetro @timeZoneOffset, de acordo com o horário oficial do período (se passar zero, a Function retornará em UTC direto).

Diversas linguagens de programação possuem classe de DataHora, onde o usuário pode instanciar os objetos informando que a data/hora está em UTC. Assim, ao chamar o método que passe para o LocalTime, ele será convertido apropriadamente, com as informações de quando começa e termina o horário de verão.

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Leave a Reply

Your email address will not be published.Required fields are marked *