Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Hora en entero a hora en decimal.

Jóvenes Delphineros, buena tarde...

Les platico mi problema. Resulta que en los desarrollos de la empresa manejamos por separado la fecha como un número Double y la hora como un entero resultado del cálculo de las horas y minutos transcurridos desde la medianoche (00:00) del día que se trate.

Como sabemos, el tipo TDateTime es un número doble conformado por la fecha (la parte entera del número) y la hora en precisión de hasta milisegundos (la parte en decimales del número); pero ahora se me viene el problema que debo obtener DE REGRESO el valor TDateTime a partir de sumar la fecha (un número entero, en éste caso) a OTRO NÚMERO ENTERO que significa la hora (un número entero con precisión de hasta minutos) en el siguiente formato:

Código Delphi [-]
iLaHora := 675;

Siendo 675 el equivalente a las 11:15 am. Mi problema principal ahora se remite a obtener el número decimal que equivalga a las 11:15 para sumarlo al número entero que me significa la fecha (quedando como 41860.58101212343564 o algo así) y poder hacer cálculos a partir de éste número.

Intenté obtener la hora con ésta operación:

Código Delphi [-]
dLaHora := (iLaHora /60)*0.01);

y

Código Delphi [-]
dLaHora := (iLaHora /60);

... pero en ambos casos, el número NO REPRESENTA las 11:15 am.

¿Podría alguien orientarme en cómo resolver ésto? Es decir, obtener la hora en un número decimal a partir de un número entero.

Agradeciendo de antemano su atención, y en espera de sus ideas, por locas que puedan parecer.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #2  
Antiguo 14-01-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
En terminos generales, es pesima idea hacer calculos manuales de fechas y horas. Es algo particularmente lleno de problemas, casos especiales y demas. Osea, usa datetime y las funciones hechas para operar sobre ellas.

p.D: Simpre me ha parecido increible que se "inventen" tipos de datos especiales en vez de usar los nativos del lenguaje/base de datos. Porque lo haces? Nunca he sabido de un verdadero argumento, y solo existe 1 caso donde es vagamente justificable: hacer un datamart/olap
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 14-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por mamcx Ver Mensaje
....y solo existe 1 caso donde es vagamente justificable...
... y falta el otro caso donde es plenamente justificable: Cuando así te lo ordena el que firma los cheques de pago...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco

Última edición por TiammatMX fecha: 14-01-2013 a las 22:06:39.
Responder Con Cita
  #4  
Antiguo 14-01-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Si quieres convertir 675 unidades minutos en la parte fraccionaria que representaría dentro de un TDateTime, basta con una simple regla de tres (que en realidad se reduce a una simple división):
Código:
     1 día                  X
------------------     -----------
MinsPerDay minutos     675 minutos

X = (675 * 1) / MinsPerDay = 675 / MinsPerDay = 0.46875 días
Sumas ese valor a la fecha entera y le estará dando las 11:15 AM a dicha fecha. La constante Delphi MinsPerDay (de la unidad SysUtils) tiene un valor de 1440 (cantidad de minutos en un día).

¿Pos pa' quién trabajas Felipe?
Responder Con Cita
  #5  
Antiguo 15-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
...¿Pos pa' quién trabajas Felipe? ...
Para alguien que en su momento consideró que manejar la hora como entero era mejor que usar TDateTime...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #6  
Antiguo 15-01-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por tiammat Ver Mensaje
Para alguien que en su momento consideró que manejar la hora como entero era mejor que usar TDateTime...
OK, resuelto el problema gracias a mi compadre AlGonzález. El código queda así:

Código Delphi [-]
function TformReporteArchivoClinico.RevisarHorario(dFecha: TDateTime;iHoraOut: integer): Integer;
begin
   RevisarHorario := HoursBetween(Trunc(DataSys.GetServerDate)+((GetSysMinute/60)/24),Trunc(dFecha)+((iHoraOut/60)/24));
end;

Muchas gracias por sus aportaciones.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como le resto una hora a la fecha y hora en sql server uper MS SQL Server 3 12-10-2015 20:41:49
diferencia de campos hora y almacenarlo en hora gonza_619 Varios 7 06-12-2010 01:51:03
seleccionar hora en datetimepicker desde hora especifica gonza_619 Varios 4 21-11-2010 20:42:19
Pasar un entero a decimal? Alejo15x Varios 1 02-02-2010 21:16:34
Convertir de hora GMT a hora local marceloalegre Varios 4 16-05-2007 23:35:58


La franja horaria es GMT +2. Ahora son las 19:16:13.


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
Copyright 1996-2007 Club Delphi