Data e hora com fuso Horário
03/04/2013
0
Estou precisando preencher uma propriedade com a data, hora e fuso horário conforme o exemplo a baixo.
Ex: 2013-04-01T13:14:12-03:00
Estou utilizando Delphi 7. Será que alguém tem alguma idéia para ajudar?
Obrigado.
Ureis
Post mais votado
05/04/2013
1 - Criei uma função para pegar o time zone.
function PegaTimeZone: string;
var
TimeZone: TTimeZoneInformation;
begin
GetTimeZoneInformation(TimeZone);
Result := FormatFloat('00', TimeZone.Bias div -60) + ':00';
end;
2 - Formatei a data e hora e incrementei com a função.
InfEvento.DhEvento := FormatDateTime('YYYY-MM-DD', Now) + 'T' + FormatDateTime('hh:nn:ss', Now) + PegaTimeZone;
obrigado
abraço a todos
Ureis
Mais Posts
03/04/2013
Ureis
Mas acredito que tenha que pegar esta informação pelo Delphi.
Mas aceito todas as idéias.
obrigado.
03/04/2013
Rafael Cunha
SELECT SYSDATETIMEOFFSET() AS [SYSDATETIMEOFFSET]
03/04/2013
Joel Rodrigues
[url]http://msdn.microsoft.com/en-us/library/bb630289.aspx[/url]
03/04/2013
Ureis
Tem que ficar exatamente conforme o Ex.: 2013-04-01T13:14:12-03:00
obrigado.
03/04/2013
Ana Santos
http://www.delphibasics.co.uk/RTL.asp?Name=FormatDateTime
Faça o seguinte teste no Delphi :
ShowMessage('dd/mm/yy hh:nn:ss = '+
FormatDateTime('yyyy-mm-dd',(now))+'T'+ FormatDateTime('hh:nn:ss_zzz', (NOW)));
04/04/2013
Ureis
Agradeço a todos pelas dicas postadas.
Será que alguém tem mais alguma idéia.
Preciso mostrar exatamente desta maneira: '2013-04-01T13:14:12-03:00'. Obs.: Os segundos tem que ter apenas 2 casas.
04/04/2013
Rafael Cunha
04/04/2013
Ureis
Sim. Correto.
21/09/2017
Jonatas Alves
uma forma de simplificar este código, não que ele esteja errado, por favor não me levem a mal!!!
Para evitar duas formatações de data, façam o seguinte:
InfEvento.DhEvento := formatDateTime( 'yyyy-mm-dd"T"hh:mm:ss', now ) + FormatFloat( '00', ( fusoHorario.Bias div fusoHorario.DaylightBias ) ) + ':00' ;
obs 1: Dentro do "formatDateTime" (do DELPHI), caso não queiram que um determinado caractere seja compreendido erroneamente pelo compilado, é necessário envolver este caractere com aspas duplas ( "T" ). No caso do 'T', caso não seja realizado isto, é retornado "ShortTimeFormat", ou seja, o compilador entende que solicitamos o horário "abreviado" ;
obs 2: Vejam que no lugar de "-60" utilizei a propriedade "DaylightBias" da classe "TTimeZoneInformation"
Espero que ajude!
Clique aqui para fazer login e interagir na Comunidade :)