Data e hora com fuso Horário

03/04/2013

29

Bom dia.

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.
Responder

Posts

03/04/2013

Joel Rodrigues

Qual banco de dados você está usando?
Responder

03/04/2013

Ureis

Estou usando Sql Server 2008.

Mas acredito que tenha que pegar esta informação pelo Delphi.
Mas aceito todas as idéias.

obrigado.
Responder

03/04/2013

Rafael Cunha

O comando abaixo retorna a data como você precisa.

SELECT SYSDATETIMEOFFSET()    
AS [SYSDATETIMEOFFSET] 
Responder

03/04/2013

Joel Rodrigues

Veja se este link te ajuda:
[url]http://msdn.microsoft.com/en-us/library/bb630289.aspx[/url]
Responder

03/04/2013

Ureis

Tem como formata não colocando os milisegundos?

Tem que ficar exatamente conforme o Ex.: 2013-04-01T13:14:12-03:00

obrigado.
Responder

03/04/2013

Ana Santos

Dê uma vista de olhos em :

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)));
Responder

04/04/2013

Ureis

Bom dia a todos....

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.

Responder

04/04/2013

Rafael Cunha

De onde você pretende retornar essa Data? Isso é para nota fiscal eletrônica?
Responder

04/04/2013

Ureis

Sim. Correto.
Responder

04/04/2013

Ureis

De onde você pretende retornar essa Data? Isso é para nota fiscal eletrônica?


Sim. Correto.
Responder

05/04/2013

Ureis

Depois de várias opções com ajuda de todos aqui e procurar muito na internet consegui uma solução e gostaria de compartilhar com todos.

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
Responder

21/09/2017

Jonatas Alves

Olá,

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!
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira