Partilhar via


Função de ER CHANGETIMEZONE

A função CHANGETIMEZONE devolve um valor DateTime em Hora Universal Coordenada (Hora do meridiano de Greenwich [GMT]) que é convertido a partir de um determinado valor de data/hora num fuso horário para um valor de data/hora noutro fuso horário.

Sintaxe

CHANGETIMEZONE (datetime, base time zone, target time zone)

Argumentos

datetime: DateTime

Um valor de data/hora no fuso horário de Hora Universal Coordenada que representa o valor de data/hora a converter.

base time zone: Cadeia

O nome do fuso horário para o qual um determinado valor de data/hora muda antes da conversão.

target time zone: Cadeia

O nome do fuso horário para o qual um valor de data/hora convertido muda durante a conversão.

Valores de retorno

DateTime

O valor de data/hora resultante no fuso horário de Hora Universal Coordenada.

Notas de utilização

Para especificar os fusos horários de origem e destino, pode utilizar nomes de fusos horários fornecidos pela Internet Assigned Numbers Authority (IANA) ou suportados pelo Microsoft Windows.

Durante a execução, a exceção "Fuso horário '<time zone name>' não existe" é iniciada se o nome fornecido não for localizado na lista da IANA ou no registo do Windows.

Para os fusos horários em que é observada a hora de verão, a conversão considera a compensação da hora de verão de Hora Universal Coordenada. As últimas informações disponíveis sobre esta compensação são utilizadas durante a conversão.

Exemplo 1

Neste exemplo, são utilizados os nomes do fuso horário para o Windows.

Configure a origem de dados DSX do tipo Campo calculado. Contém a seguinte expressão.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "E. Europe Standard Time", "Hawaiian Standard Time"), "O")
)

Se configurar a expressão da origem de dados DSY do tipo Campo calculado como DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), a origem de dados DSX devolve o texto 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Este texto mostra que a diferença de tempo entre os dois fusos horários previstos no dia 1 de junho é superior a 24 horas. Portanto, o valor de data/hora convertido é um dia mais cedo do que o valor de data/hora determinado, porque o fuso horário de origem está à frente do fuso horário de destino.

Se configurar a expressão da origem de dados DSY do tipo Campo calculado como DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), a origem de dados DSX devolve o texto 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Este texto mostra que a diferença de tempo entre os dois fusos horários previstos no dia 1 de dezembro é inferior a 24 horas. Portanto, o valor de data/hora convertido é igual ao valor de data/hora determinado.

Nota

A mesma expressão devolve uma variação diferente entre os valores de data/hora fornecidos e convertidos para o mesmo par de fusos horários, porque é observada uma compensação da hora de verão de Hora Universal Coordenada diferente para os fusos horários fornecidos numa determinada data/hora.

Exemplo 2

Neste exemplo, são utilizados os nomes do fuso horário da IANA.

Configure a origem de dados DSX do tipo Campo calculado. Contém a seguinte expressão.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "Europe/Athens", "US/Hawaii"), "O")
)

Se configurar a expressão da origem de dados DSY do tipo Campo calculado como DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), a origem de dados DSX devolve o texto 2021-06-01T12:55:00.0000000+00:00 -> 2021-05-31T23:55:00.0000000+00:00. Este texto mostra que a diferença de tempo entre os dois fusos horários previstos no dia 1 de junho é superior a 24 horas. Portanto, o valor de data/hora convertido é um dia mais cedo do que o valor de data/hora determinado, porque o fuso horário de origem está à frente do fuso horário de destino.

Se configurar a expressão da origem de dados DSY do tipo Campo calculado como DATETIMEVALUE ("01-Dec-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), a origem de dados DSX devolve o texto 2021-12-01T12:55:00.0000000+00:00 -> 2021-12-01T00:55:00.0000000+00:00. Este texto mostra que a diferença de tempo entre os dois fusos horários previstos no dia 1 de dezembro é inferior a 24 horas. Portanto, o valor de data/hora convertido é igual ao valor de data/hora determinado.

Exemplo 3

Configure a origem de dados DSX do tipo Campo calculado. Contém a seguinte expressão.

CONCATENATE(
    DATETIMEFORMAT( DSY, "O"), 
    " -> ", 
    DATETIMEFORMAT( CHANGETIMEZONE(DSY, "US/Hawaii", "Europe/Athens"), "O")
)

Se configurar a expressão da origem de dados DSY do tipo Campo calculado como DATETIMEVALUE ("01-Jun-2021 12:55:00", "dd-MMM-yyyy HH:mm:ss", "EN"), a origem de dados DSX devolve o texto 2021-06-01T12:55:00.0000000+00:00 -> 2021-06-02T01:55:00.0000000+00:00'. Este texto mostra que a diferença de tempo entre os dois fusos horários previstos no dia 1 de junho é superior a 24 horas. Portanto, o valor de data/hora convertido é um dia mais tarde do que o valor de data/hora determinado, porque o fuso horário de destino está à frente do fuso horário de origem.

Exemplo 4

Pode receber um carimbo de data/hora de uma origem externa como texto que não contém informações sobre o fuso horário. Contudo, pode conhecer o fuso horário em que a origem é operada. Por exemplo, recebe o carimbo de data/hora 01/12/2021 12:55:00 de um serviço operado em Espanha. Para guardar corretamente este valor de data/hora na base de dados, conclua a seguinte conversão:

  • Configure a origem de dados DSY do tipo Campo calculado para converter um carimbo de data/hora a partir de texto para o valor de data/hora de Hora Universal Coordenada.

    DATETIMEVALUE ("01/12/2021 12:55:00", "dd/MM/yyyy HH:mm:ss", "ES")

  • Configure a origem de dados DSX do tipo Campo calculado para mudar o valor de data/hora convertido para Hora Universal Coordenada como o valor de data/hora do fuso horário da origem externa.

    CHANGETIMEZONE(DSY, "Romance Standard Time", "GMT Standard Time")

Nota

Quando utilizar a função CHANGETIMEZONE para a conversão de data/hora, tenha em atenção que qualquer valor de data/hora é armazenado na base de dados como o valor do fuso horário de Hora Universal Coordenada. Antes que este valor possa ser apresentado nas páginas da aplicação, é transformado. A transformação considera o fuso horário definido como uma zona preferencial para o utilizador da aplicação atualmente com sessão iniciada.

Recursos adicionais

Funções de data e hora