FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error al trabajar con fechas
Hola gente del foro, ante todo muchas gracias por su atencion ya que mi primer y unica pregunta hasta ahora se han molestado en contestarmela en forma rapida, clara y precisa, cosa que para usuarios nuevos como yo, son de gran valor y utilidad.
El motivo de esta nueva consulta es que al trabajar con tipos de datos de fecha (TDateTime) siempre me aparece el mismo resultado: "30/12/1899" Estoy intentando hacer diferencias entre una fecha final y una fecha inicial para obtener el numero de dias transcurridos y probe dandole valores constantes a dos variables tipo TDateTime y como resultado obtengo la fecha antes mencionada. Alguna sugerencia? Muchas gracias por su tiempo. Saludos |
#2
|
||||
|
||||
Primero es necesaria una explicación acerca de ese gran desconocido TDatetime.
Una fecha en delphi es un valor double, donde la parte entera, son los días transcurridos desde el calendario base (31/12/1899), y la parte fraccionaria las horas minutos, segundos y milisegundos. por ejemplo, sumar 1 día a una fecha, es tan simple como esto:
Para tratar con horas, debemos hacer cálculos, por ejemplo, sumar una hora a la fecha y hora actual: como un día tiene 24 horas, 1/24 corresponde a 1 hora. 1/(24*60) corresponde a un minuto. 1/(24*60*60) corresponde a 1 segundo De esta forma se pueden hacer todo tipo de cálculos correctamente y sin error. Delphi, en la unidad DateUtils tiene toda una batería de funciones para tratar con fechas y horas sin tener que hacer cálculos, por ejemplo: - IncDay - IncMonth - IncYear - IncHour y otras para calcular diferencias: - DaysBetween (diferencia en días) - DaySpan (diferencias en días y fracciones de días) - MinutesBetween - HoursBetween Te recomiendo que le eches una visual, por ejemplo en la ayuda de Delphi. De todo lo anterior, podrías hacer el cálculo de dos formas:
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
No encuentro la unit DateUtils, ni tampoco las funciones
- DaysBetween (diferencia en días) - DaySpan (diferencias en días y fracciones de días) - MinutesBetween - HoursBetween - Etc... Tengo Delphi 5, perdon por mi ignorancia pero puede ser por eso, que sea la version de mi Delphi sea demasiado antigua?? Muchas gracias |
#4
|
|||
|
|||
Primero que nada, lo que yo creo es que estas trabajando con TDateTimePicker o con MonthCalendar y borraste la propiedad Date. Por eso te la deja como 31/12/1899.
En tiempo de ejecución pon lo siguiente:
Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#5
|
||||
|
||||
Cita:
Tendrías que crear algunas rutinas que lo hagan, teniendo en cuenta mi mensaje anterior, podrías codificarlas... o eso espero. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
|||
|
|||
Hola gente, les cuento que me pase a la version 7 de Delphi y si bien encontre las funciones y la unit mencionadas sigo teniendo el mismo problema: casi todas las operaciones que hago dan como resultado 30/12/1899. Es raro porque no es 31/12/1899 como la base del calendario sino 30/12/1899. Les dejo por las dudas el fuente por si lo quieren ver, capaz estoy haciendo algo mal... espero no me reten, jaja. Muchas gracias
|
#7
|
|||
|
|||
Bueno tienes varios detalles en tu código.
1. Usas variables de tipo Double, mejor usa tipo TDateTime. 2. Estas buscando dias transcurridos entre las fechas. 3. Muestras los dias como si fuera fecha y no es así, es un valor entero. Aqui te pongo la modificación a tu código.
Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#8
|
|||
|
|||
Ayuda con tdate time
Como puedo hacer esto mismo que ustedes explican pero en c++????
|
#9
|
|||
|
|||
Ahora si anduvo bien, muchas gracias. En realidad habia probado todo lo que decis menos pasar la fecha como una cadena. Yo la fecha la asignaba directamente a la variable TdateTime y en el resultado de cualquier operacion me daba cero. Por que se hace eso de asignar como cadena y despues convertirla a date en vez de ingresarla como TdateTime directamente??
|
#10
|
|||
|
|||
Cita:
Pero, si lo que quieres es pasar directamente una variable TDateTime puedes hacer esto y funciona bien. Aqui estoy usando dos componentes adicionales que son los TDateTimePicker con la propiedad Date. Aunque se puede simplificar de otra manera. pero la idea es que observes la diferencia, con el StrtoDate. Aquí la simplificación del código. Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#11
|
||||
|
||||
Hola
Hace ya algun tiempo el Maestro Al Gonzalez hizo el codigo para restar fechas: Saludos |
#12
|
||||
|
||||
que BD Utilizas
Indicame que BD utilizas, tal vez te pueda ayudar..
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error Con Fechas! | nicolas_espina | SQL | 2 | 04-08-2006 01:18:19 |
Como trabajar con fechas y horas | JULIPO | MySQL | 7 | 07-06-2006 17:01:34 |
DBGrid, trabajar con fechas | BlueSteel | Varios | 4 | 02-09-2005 21:30:20 |
me hace falta un componente para trabajar con fechas y bases de datos | fearlex | Conexión con bases de datos | 17 | 13-07-2004 23:37:28 |
Como trabajar con fechas? | judoboy | OOP | 4 | 19-05-2003 11:28:58 |
|