![]() |
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:
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:
y
... 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. |
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 |
Cita:
|
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 ¿Pos pa' quién trabajas Felipe? :p |
Cita:
|
Cita:
Muchas gracias por sus aportaciones. |
La franja horaria es GMT +2. Ahora son las 08:39:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi