Como converto uma Data+hora em um numero Inteiro?
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?
Alguém sabe me dizer onde encontro alguma função que faça esta conversão?
Sergio Santos
Curtidas 0
Melhor post
Renato Rubinho
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
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
GOSTEI 1
Mais Respostas
Jiraya San
06/01/2015
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:
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
GOSTEI 0
Jiraya San
06/01/2015
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?
Teria uma ideia de como fazer isso?
GOSTEI 0
Sergio Santos
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
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?
GOSTEI 0
Renato Rubinho
06/01/2015
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.
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.
GOSTEI 1
Sergio Santos
06/01/2015
Eu ainda não achei nada que me desse este valor.
Vou tentar montar com o passo a passo que vc me passou..
Vou tentar montar com o passo a passo que vc me passou..
GOSTEI 0