Data e hora com fuso Horário
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.
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
Curtidas 0
Melhor post
Ureis
05/04/2013
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
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
GOSTEI 1
Mais Respostas
Joel Rodrigues
03/04/2013
Qual banco de dados você está usando?
GOSTEI 0
Ureis
03/04/2013
Estou usando Sql Server 2008.
Mas acredito que tenha que pegar esta informação pelo Delphi.
Mas aceito todas as idéias.
obrigado.
Mas acredito que tenha que pegar esta informação pelo Delphi.
Mas aceito todas as idéias.
obrigado.
GOSTEI 0
Rafael Cunha
03/04/2013
O comando abaixo retorna a data como você precisa.
SELECT SYSDATETIMEOFFSET() AS [SYSDATETIMEOFFSET]
GOSTEI 0
Joel Rodrigues
03/04/2013
Veja se este link te ajuda:
[url]http://msdn.microsoft.com/en-us/library/bb630289.aspx[/url]
[url]http://msdn.microsoft.com/en-us/library/bb630289.aspx[/url]
GOSTEI 0
Ureis
03/04/2013
Tem como formata não colocando os milisegundos?
Tem que ficar exatamente conforme o Ex.: 2013-04-01T13:14:12-03:00
obrigado.
Tem que ficar exatamente conforme o Ex.: 2013-04-01T13:14:12-03:00
obrigado.
GOSTEI 0
Ana Santos
03/04/2013
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)));
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)));
GOSTEI 0
Ureis
03/04/2013
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.
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.
GOSTEI 0
Rafael Cunha
03/04/2013
De onde você pretende retornar essa Data? Isso é para nota fiscal eletrônica?
GOSTEI 0
Ureis
03/04/2013
Sim. Correto.
GOSTEI 0
Ureis
03/04/2013
De onde você pretende retornar essa Data? Isso é para nota fiscal eletrônica?
Sim. Correto.
GOSTEI 0
Jonatas Alves
03/04/2013
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:
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!
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!
GOSTEI 0