FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Desesperado al comparar dos fechas - horas
Tengo que comparar dos TDateTime, y no me funciona de ninguna manera, he probado a comprar directamente los dos TDateTime, tambien he probado la funcion CompareDateTime y por ultimo los he pasado a una cadena mediante DateTimeToStr y he comparado las cadenas y sigue sin funcionar. Decir que las fechas son iguales.
Un saludo y gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5 |
#2
|
||||
|
||||
A mi siempre me ha funcionado sin problema comparar dos fechas con =, o <>.
A ver si lo que pasa es que tienes dos TDateTime cuya Fecha sea la misma (o distinta) pero la parte horaria te está influyendo en la comparación ! Al indicar TDateTime no sé si has tenido esto en cuenta.
__________________
Piensa siempre en positivo ! |
#3
|
|||
|
|||
El formato de un TDateTime creo que es del tipo double; de hecho si asignas a un double la funcion now() te la convierte en fracciones de segundos desde una determinada fecha origen. Como son fracciones de segundos puedes extraer de ella informacion sobre las horas multiplicando y tomando la parte entera. No se si te sirve de ayuda...
|
#4
|
||||
|
||||
Los TDateTime son valores reales que en la parte entera guardan la fecha y en la decimal la hora. Se opera con ellos como con cualquier otro número, aunque también hay funciones específicas.
Cita:
|
#5
|
||||
|
||||
Mira!
No se muy bien lo que quieres mas tengo un codigo que verifica una data o horario dependiando de como lo haces!
procedure TForm1.Button1Click(Sender: TObject); var DT:TStringList; begin DT:=TStringList.Create; DT.LoadFromFile('C:\root.txt'); if Date >=StrToDate(Copy(DT.Text,1,10)) then Application.Terminate; el archivo de texto que contiene la data 'root.txt' exemplo: 12/02/2007 espero que ayude en algo es una buena forma de comparar! |
#6
|
||||
|
||||
Podes usar esto, asignas hora 0:00 a las fechas que tienen los TDateTimePicker antes de comparar
Espero te sirva Saludos |
#7
|
||||
|
||||
¿Son solo fechas?
La pregunta del millón es: ¿Son solo fechas?; ó es que, hay algo mas que evita que las fechas sean comparables. Pues sí, algunos componentes que editan la fecha devuelven la hora también; o puede ser que, lo estes comparando con un campo de tipo TDateTime y tenga la hora incluida. A mi me pasaron las dos cosas.
Para salir de la duda, trunca ambas fechas y luego compáralas. Así:
Espero te sirva. Chau..! |
#8
|
||||
|
||||
Lo que tengo que comparar son dos TDateTime con fecha y hora, y como he dicho he probado a compararlo tal cual, compararlas con la funcion "CompareDateTime" y por ultimo he probado a pasarlo a una cadena y comparar las cadenas, que incomprensiblemente y siendo iguales no se comparan bien.
If TDateTime1 = TDateTime2 Then //No funciona If CompareDateTime(TDateTime1, TDateTime2) = 0 Then //No funciona c1 := DateTimeToStr(TDateTime1); c2 := DateTimeToStr(TDateTime2); If c1 = c2 Then //Tampoco funciona A ver si alguien tiene idea de porque me pasa esto.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5 |
#9
|
||||
|
||||
Me acabo de dar cuenta de un detalle :
Espero que estés comparando los variables correctas de TDateTime de tu aplicación. Estás mostrando comparaciones entre TDateTime1 y TDateTime2. Supongo que deberías tener declarado en tu programa dos varibales del tipo TDateTime. Algo así como :
Y la comparación estás haciéndola con Fecha1 y Fecha2 :
Me desconcierta un poco tu código donde haces la comparación entre TDateTime1 y TDateTime2. Si es una simple cuestión de nomenclatura de tus variables, bien. Pero si no es así, revísalo. Por otro lado, deberías de asignar los valores de tus variables de fecha y hora a comporar a unos strings de esta manera : y que expongas aquí los valores que te devuelven Aux_String1 y Aux_String2 para ver tus valores concretos.
__________________
Piensa siempre en positivo ! |
#10
|
||||
|
||||
Otra alternativa
Utilizando las herramientas provistas por gluglu podemos comparar las fechas y horas como si fueran cadenas. De esta forma yo propongo lo siguiente (que a mi parecer es infalible).
Suerte y espero que te sirva. |
#11
|
|||
|
|||
Deberías poner tu código completo.
¿Qué significa "No funciona" para tí? Porque si no funciona te debe dar algún error, o si no te da error es que si que funciona. Por lo tanto la conclusión que yo saco, es que sí que funciona pero que no te da el resultado que tu crees que debe dar. Si es esto así, creo que el error sería que tu piensas que las variables son iguales y en realidad no lo son, o que piensas que son distintas y en realidad son iguales. Recuerdo vagamente que algún problema de este tipo tuve restando dos fechas y no salía lo que yo pensaba que tenia que salir debido a las diferencias entre Now y Date. Un saludo. |
#12
|
||||
|
||||
¿Hay conclusión?
Bueno..! ¿Qué pasó? ¿Me perdí de algo? ¿A qué conclusión llegamos? ¿Al final, la comparación entre fechas funciona?
....??? |
#13
|
||||
|
||||
Operación con fechas
Hola, tengo el siguiente problema :
Requiero comparar la fecha de una tabla con la fecha tomada por el sistema. El campo en la tabla es tipo Date. La variable que toma la fecha del sistema es tipo String. Es algo como esto: fechaArranque:string; . . fechaArranque:=datetostr(date); Es así como tomo la fecha pero cuando hago esta pregunta: if (Dmsip.TblSolicituDiarios['FECHA']=fechaArranque then me presenta el siguiente error: [Error] UFrmSolicitudPendiente.pas(201): Incompatible types: 'String' and 'Boolean' Agradezco si alguien me puede guiar. |
#14
|
||||
|
||||
Problemas de siempre
Intenta hacer lo siguiente:
Suerte y después cuenta cómo te fué...
__________________
Cita:
|
#15
|
||||
|
||||
Gracias
Gracias...
Solucione el problema de la siguiente manera: if DmSip.TblSolicituDiarios.Locate('FECHA',vararrayof ([fechaArranque]), []) then
__________________
Alejandrina |
#16
|
|||
|
|||
Units
Tengo una serie de Units.....creo que las de sourceforge, que te hacen todo eso, me dices si las quieres, tira por fernandobuitrago@gmail.com....creo que las puedo distribuir gratis...creo, pues ellas están gratis.
|
#17
|
||||
|
||||
muchas gracias amigo pablotech me ha resultado tu metodo infalible al principio no funcionaba por que mi constante de fecha era tdatetime y mis otras fechas eran date! gracias
__________________
Todo es Relativo |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comparar Horas en SQL Server | trex2000 | MS SQL Server | 3 | 23-01-2007 21:13:01 |
Comparar horas en variables | vivamotos | Firebird e Interbase | 3 | 19-09-2006 22:07:22 |
Ayuda para comparar Horas | JerS | Varios | 4 | 21-09-2005 17:06:31 |
comparar horas | noobdelphi | Firebird e Interbase | 2 | 27-01-2005 15:55:01 |
Comparar Horas | Novás | Varios | 3 | 06-01-2004 11:49:32 |
|