Converte data e hora UTC para data e hora local.
Sintaxe
UTCToLocal( < cDate >, < cTime >, [ nDST ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cDate | caractere | Indica a data UTC no formato ano, mês e dia. Exemplo: yyyyMMdd. | X |
|
cTime | caractere | Indica a hora UTC no formato hora, minuto e segundo. Exemplo: hh:mm:ss. | X |
|
nDST | numérico | Caso seja informado o valor 0 (Default), indica que o resultado deve representar o horário solar (ou standard time). Caso seja informado o valor 1, a data e horário serão a representação de tempo em horário de verão (Daylight Savings Time). |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
aRet | vetor | Retorna um array contendo a data (yyyyMMdd) e a hora (hh:mm:ss). |
Observações
Uma data e horário UTC, são convertidas para o fuso horário local, baseado na configuração de fuso horário do sistema operacional onde está sendo executado o Protheus Server/AppServer, onde o horário retornado sempre será o standard time, ou horário solar. O fato da data informada estar dentro de um perídio de vigência de horário de verão não muda o seu comportamento, sempre será retornado o horário solar. Por exemplo: Considerando um ambiente onde o sistema operacional está configurado com o relógio no fuso horário de Brasília (GMT-3), a data 10/01/2013, horário das 13:00:00 do horário de verão, é representado em UTC como 20130110 15:00:00. Ao converter este momento UTC novamente para horário local, neste mesmo fuso-horário e zona de tempo, é retornado o horário 12:00:00 (standard time, ou horário solar).
Em release superior a 7.00.121227P, a função UTCToLocal pode receber um terceiro parâmetro, para mudar o comportamento de retorno da função, indicando que o retorno deve representar uma data e horário ajustados para a vigência de horário de verão. Cabe ressaltar que, em nenhum momento a função em si é capaz de saber ou validar se na data informada o horário de verão estava em vigor ou não. No exemplo acima informado, caso a função receba o momento UTC 20130110 às 15:00:00, e seja informado o valor 1 no 3º parâmetro da função, o horário retornado pela função será 13:00:00 ( daylight saving time, ou horário de verão).
O que é UTC ?
A hora UTC (Coordinate Universal Time) é um padrão internacional de tempo equivalente à GMT (Greenwich Mean Time). Zero (0) UTC corresponde à meia-noite em Greenwich England situada na longitude zero. Como nós estamos no terceiro fuso horário à oeste de Greenwich, temos de subtrair 3 horas do valor UTC.Assim, por exemplo, 0:00 UTC é igual a 21:00 h local.
O Tempo Universal Coordenado (em inglês Coordinated Universal Time), ou UTC (Acrônimo de Universal Time Coordinated), também conhecido como tempo civil, é o fuso horário de referência a partir do qual se calculam todas as outras zonas horárias do mundo. É o sucessor do Tempo Médio de Greenwich (Greenwich Mean Time), abreviadamente GMT. A nova denominação foi cunhada para eliminar a inclusão de uma localização específica num padrão internacional, assim como para basear a medida do tempo nos padrões atômicos, mais do que nos celestes.
Ao contrário do GMT, o UTC não se define pelo sol ou as estrelas, mas é sim uma medida derivada do Tempo Atômico Internacional (TAI). Devido ao fato do tempo de rotação da Terra oscilar em relação ao tempo atômico, o UTC sincroniza-se com o dia e a noite de UT1, ao que se soma ou subtrai segundos de salto (leap seconds) quanto necessário. Os segundos de salto são definidos, por acordos internacionais, para o final de julho ou de dezembro como primeira opção e para os finais de março ou setembro como segunda opção. Até hoje somente julho e dezembro foram escolhidos como meses para ocorrer um segundo de salto. A entrada em circulação dos segundos de salto é determinada pelo Serviço Internacional de Rotação da Terra e Sistemas de Referência (IERS), com base nas suas medições da rotação da terra.
"UTC" não é realmente uma abreviatura; é uma variante do tempo universal, (universal time, abreviadamente UT) e o seu modificador C (para "coordenado") foi incluído para enfatizar que é uma variante de UT. Pode-se considerar como um compromisso entre a abreviatura inglesa "CUT" e a francesa "TUC".
Os tempos UTC de alta precisão só podem ser determinados uma vez, sendo conhecido o tempo atômico, que se estabelece mediante a reconciliação das diferenças observadas entre um conjunto de relógios atômicos mantidos por um determinado número de oficinas do tempo nacionais. Isto é feito sob coordenação do Escritório Internacional de Pesos e Medidas (Bureau International des Poids et Mesures - BIPM). Não obstante, os relógios atômicos são tão exatos que só os mais precisos computadores necessitam usar estas correções; e a maioria dos utilizadores de serviços de tempo utilizam os relógios atômicos que tenham sido previamente configurados como UTC, para estimar a hora UTC.
Devido aos segundos de salto é impossível determinar que representação UTC virá a ter numa data futura, pois o número de segundos de salto que se tem que incluir na data é ainda desconhecido. Para tais casos é recomendado que se utilize a representação TAI que não sofre tais limitações.
UTC é o sistema de tempo utilizado por muitos padrões da Internet e da World Wide Web. Em particular, desenhou-se o Network Time Protocol como uma forma de distribuir o tempo UTC na Internet.
Em relação ao horário de Brasília, o Tempo Universal Coordenado está três horas adiantado. Isto é, se são 17h em Brasília (sem horário de verão), são 20h no padrão UTC.
O Parlamento Europeu decidiu que para todos os países da União Europeia seria uniformemente estabelecido que a Hora de Verão (em inglês: daylight savings time, DST) se inicia às 02:00 UTC do último domingo de cada mês de Março, sendo acrescida de uma hora, e termina às 02:00 UTC do último domingo do mês de Outubro. No caso de Portugal ou Reino Unido, a Hora de Inverno coincide com a hora UTC.
Exemplos
User Function Exemplo() aRetorno := UTCToLocal( "20080919", "02:24:25" ) conout( "Data no formato Local: " + aRetorno[1] ) conout( "Hora no formato Local: " + aRetorno[2] ) return
Abrangência
Protheus 10, Protheus 11