Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir integer a formato de hora en un TTime. (https://www.clubdelphi.com/foros/showthread.php?t=86014)

Aliixeess 06-06-2014 00:49:21

Convertir integer a formato de hora en un TTime.
 
Hola, saben si es posible convertir un integer a formato de hora?
tengo mi variable iniciocolumna declarada como integer y la variable MyInicio como TTime, ¿como puedo lograr almacenar el valor de iniciocolumna en MyInicio? :confused:

duilioisola 06-06-2014 01:32:30

¿Cuál es la relación de enteros por hora?
1 = 1 hora
60 = 1 hora
alguna otra

Una variable TDateTime es un número donde la parte entera son días y la parte decimal la parte del día

Por lo tanto, si 1 es 1 hora:
24 horas = 1 TDateTime
1 hora = 1/24 = 0.417 TDateTime

Código Delphi [-]
var
  Hora : integer;
  aTime : TDateTime;
begin
  Hora = 2;
  aTime := (1/24) * Hora;
  ShowMessage(TimeToStr(aTime))
end;

ecfisa 06-06-2014 01:38:38

Cita:

Empezado por Aliixeess (Mensaje 477399)
Hola, saben si es posible convertir un integer a formato de hora?
tengo mi variable iniciocolumna declarada como integer y la variable MyInicio como TTime, ¿como puedo lograr almacenar el valor de iniciocolumna en MyInicio? :confused:

Si la consulta es si se puede asignar un tipo Integer a uno TTime, la respuesta es si.
Es una cuestión de tipos: TTime = TDateTime = Double, y por supuesto, es posible asignar un tipo Integer a una variable de tipo Double.

Ahora si esto tiene sentido es otra cosa... El tipo TDateTime es un número real de ocho bytes, cuya parte entera representa la fecha como la cantidad de días transcurridos desde 1899 y la parte decimal representa la hora.

De allí que cualquier entero que asignes a un TTime/TDateTime/Double tendrá una componente fraccionaria igual a cero.

De modo siendo MyInicio de tipo TTime, hacer:
Código Delphi [-]
  MyInicio:= iniciocolumna;
Es lo mismo que:
Código Delphi [-]
  MyInicio:= 0;

Eso sí, podrías hacer:
Código Delphi [-]
  MyInicio:= iniciocolumna / un_valor;
Pero no sé que valores puede tomar iniciocolumna y que valores deseas obtener en MyInicio.

Saludos :)

Edito: No había visto el mensaje de duilioisola, pero el planteo que que me hago es similar :confused:.

Aliixeess 06-06-2014 01:50:25

Duda
 
los valores que toma la variable iniciocolumna son solo enteros, van de 7 a 23.
Entonces lo que quiero lograr es que la variable MyInicio sea igual a 7:00 cuando iniciocolumna es igual a 7, estuve buscando alguna instruccion para convertir integers a ttime, pero no he encontrado nada.

ecfisa 06-06-2014 02:18:08

Hola Aliixeess.
Cita:

Empezado por Aliixeess (Mensaje 477404)
los valores que toma la variable iniciocolumna son solo enteros, van de 7 a 23.
Entonces lo que quiero lograr es que la variable MyInicio sea igual a 7:00 cuando iniciocolumna es igual a 7, estuve buscando alguna instruccion para convertir integers a ttime, pero no he encontrado nada.

Entiendo, entonces hace:
Código Delphi [-]
   MyInicio:= 1/24 * iniciocolumna;

Saludos :)

Aliixeess 06-06-2014 23:07:52

Solucionado
 
Gracias! esa era la respuesta.


La franja horaria es GMT +2. Ahora son las 05:54:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi