![]() |
Funcion MinutesBetween...
Hola a todos..
Resulta que estoy realizando una comparacion entres dos TDateTime pero tengo una diferencia de un minuto (deberia dar 600 y no 599), habra fallas en esta funcion y que podria hacer para solucionar esto?, probe con HoursBetween y tambien hay una hora de diferencia deberia ser 10 y no 9. Gracias por su ayuda dejo codigo fuente.
|
esto.... ¿y los segundos en la hora?.... ¿y los milisegundos ? :rolleyes:
Delito tiene decir que esas rutinas fallan :D |
Hombre, muy normal, muy normal, esto no es: :o
Resultado: Cita:
|
Sí, tienes razón, para mi no es muy normal andar utilizando la fecha base del calendario para realizar diferencias de horas.:rolleyes:
¿por qué no miras la diferencia entre las 23:00 y las 1:00 con tu código anterior? eso es más ameno ;) En resumen: Usa formato de fecha y hora siempre. No dejes los milisegundos en olvido si quieres precisión de 1 segundo (ten en cuenta que un milisegundo es el culpable de tener un segundo menos en el resultado, un minuto menos, una hora menos ... :p) Saludos |
Pues ya me ilustraras cuando tengas un rato, porque no te entiendo. :-) jejeje....
Como podemos hacer que esas funciones hagan lo que tienen que hacedr de forma correcta (desde un punto de vista "humano") ? La verdad es que utilizo poco esas funciones. Siempre trabajo en minutos o segundos (para mí, habitualmente, las fechas no son necesarias, por eso guardo solo segundos o minutos -integer- y opero con ellos de forma directa y con mis propias funciones) Salu2. |
ah, perdon.
Lo normal es usar la archifamosa función Now() para tenerlo todo, la fecha, hora y milisegundos, después si quieres cambiar un dato de la fecha, tiras de la unidad dateutils: - recodeDate - recodeTime - encodeDateTime - decodeDatetime - dayOf - monthOf - yearOf - incMonth - incDay - incHour - incMinutes - ... (revisa la ayuda de DateUtils) como ves tienes un monton de rutinas para trabajar cómodamente sin tener que codificar con string las fechas y horas. Al grano en tu ejemplo:
Si no has tenido problemas hasta ahora, es porque no has calculado diferencias de horas estando de por medio el cambio de fecha, por ejemplo, desde las 23:00 hasta la 1:00 no van 2 horas de diferencia, Delphi te dirá que van 22 horas. Al no considerar la fecha, Delphi usa la misma fecha (30/12/1899 1:00 hasta el 30/12/1899 23:00) calculando la diferencia al revés, desde la 1 de la madrugada hasta las 23:00 horas de ese mismo día Al principio crees que una rutina como incDay es una tontería, es sólo sumar un día a la fecha anterior pero,¿y si el año es bisiesto? ¿o no lo es?, obviamente todos esos "peros" están ya controlados en esas rutinas. Saludos |
Ok... acabaramos. :)
Entonces podemos resumir el asunto en que el problema está en la función 'StrtoTime', pero no en 'MinutesBetween' (que es, también, de dateutils). Aclarado queda. Salu2. |
| La franja horaria es GMT +2. Ahora son las 06:33:22. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi