GARANTIR DESCONTO

Fórum Como converto uma Data+hora em um numero Inteiro? #506412

06/01/2015

0

Procurei na SysUtils e na DateUtils por alguma função que convertesse um data (Now ou Today) com minutos e segundo para um numero inteiro e não encontrei.

Alguém sabe me dizer onde encontro alguma função que faça esta conversão?
Sergio Santos

Sergio Santos

Responder

Post mais votado

06/01/2015

Buenas,

Como a data já é tratada como inteiro e a hora/minuto/segundos/milésimos são os decimais, uma sugestão é você gravar o valor em segundos.

Ex:06/01/2015T17:20:30

30 segundos
20 minutos >> 20 * 60 segundos = 1200 segundos
17 horas >> 17 * 60 minutos = 1020 minutos >> 1020 minutos * 60 segundos = 61200 segundos
06/01/2015 >> Trunc(now) = 42010 dias >> 42010 * 24 horas = 1008240 horas >> 1008240 * 60 minutos = 60494400 minutos >> 60494400 * 60 segundos = 3629664000 segundos

então:
Data(06/01/2015) = 3629664000 segundos
17 horas = 61200 segundos
20 minutos = 1200 segundos
30 segundos

Somados os valores, você terá a data atual em segundos: 3629726430 segundos

Para retornar o valor no formato decimal inicial (em dias)

Converte em minutos: 3629726430/60 = 60495440,5
Converte em horas: 60495440,5/60 = 1008257,342
Converte em dias: 1008257,342/24 = 42010,72258

FormatDateTime('dd/mm/yyyy hh:nn:ss',42010.72258) = 06/01/2015T17:20:30

Abraççç,
rrubinho

Renato Rubinho

Renato Rubinho
Responder

Gostei + 1

Mais Posts

06/01/2015

Jiraya San

Olá Sérgio Santos estou fazendo uns testes aqui e minha situação é a seguinte:
Tenho um DateTimePicker onde clico em uma data e armazeno a mesma em uma variável para ficar por exemplo assim: 06012015 (06/01/2015)
Estou fazendo deste jeito para retornar:
// Data Entra como: 06/01/2015
Label2.Caption := 'Data Sem Barras: ' + StringReplace(DateToStr(DateTimePicker1.Date), '/', EmptyStr, [rfReplaceAll]);
// Data Sai como: 06012015
Responder

Gostei + 0

06/01/2015

Jiraya San

Estou tentando fazer o inverso agora, pegar este número: 06012015 ou 6012015 e transformar em uma data: 06/01/2015.
Teria uma ideia de como fazer isso?
Responder

Gostei + 0

06/01/2015

Sergio Santos

Buenas,

Como a data já é tratada como inteiro e a hora/minuto/segundos/milésimos são os decimais, uma sugestão é você gravar o valor em segundos.

Ex:06/01/2015T17:20:30

30 segundos
20 minutos >> 20 * 60 segundos = 1200 segundos
17 horas >> 17 * 60 minutos = 1020 minutos >> 1020 minutos * 60 segundos = 61200 segundos
06/01/2015 >> Trunc(now) = 42010 dias >> 42010 * 24 horas = 1008240 horas >> 1008240 * 60 minutos = 60494400 minutos >> 60494400 * 60 segundos = 3629664000 segundos

então:
Data(06/01/2015) = 3629664000 segundos
17 horas = 61200 segundos
20 minutos = 1200 segundos
30 segundos

Somados os valores, você terá a data atual em segundos: 3629726430 segundos

Para retornar o valor no formato decimal inicial (em dias)

Converte em minutos: 3629726430/60 = 60495440,5
Converte em horas: 60495440,5/60 = 1008257,342
Converte em dias: 1008257,342/24 = 42010,72258

FormatDateTime('dd/mm/yyyy hh:nn:ss',42010.72258) = 06/01/2015T17:20:30

Abraççç,
rrubinho


Rrubinho, obrigado pelo retorno

Entendi a lógica, mas achei uma função para fazer esta conversão. Vc teria algum exemplo?
Responder

Gostei + 0

07/01/2015

Renato Rubinho

Qual função você achou para isso ?
Um exemplo seria o passo a passo que descrevi.
Você pode criar uma função passando o TDateTime, fazendo os passos e retornando o número e outra com o inverso.
Responder

Gostei + 1

07/01/2015

Sergio Santos

Eu ainda não achei nada que me desse este valor.
Vou tentar montar com o passo a passo que vc me passou..
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar