Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2006
Avatar de Jheysson13
Jheysson13 Jheysson13 is offline
Miembro
 
Registrado: abr 2006
Posts: 133
Poder: 19
Jheysson13 Va por buen camino
Red face calculos con fechas

hola y saludos a todos.

en esta ocacion me gustaria que me ayudaran a resolver 2 problemitas, jeje.

1: es que me gustaria saber como es puedo sumar las fechas, o realizar un calculo, es decir:

suponiendo que la fecha actual es 26/10/82 como puedo referirme a una fecha de 4 mese depues, o 30 dias despues, o un año mas etc. espero ser algo claro
esto lo nececito para obtener una fecha limite de pago en mi tarea. es decir para decir que si un cliente tomo un prestamo hoy x dia su limite de pago sera en 1 mes exacto despues de dicha fecha, para poder ponerle un recargo.

2: lo segundo es que quiero saber porque cuando hago una conversion de fecha con decodedate, para obtener la fecha en formato de numeros, cuando ago un calculo con los meses es decir si el mes actual esta entre 1 al 9 me depliega un mensage. esto va bien, pero cuando digo si esta entre 10 y 12 no me reconoce estos meses porque despues de 9 vuelve a 0. como puedo resolver esto.

espero con ansia sus repuestas y que me hallan podido entender . garcias de antemano y les salu2 nuevamente.
Responder Con Cita
  #2  
Antiguo 07-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
suponiendo que la fecha actual es 26/10/82 como puedo referirme a una fecha de 4 mese depues, o 30 dias despues, o un año mas etc. espero ser algo claro
esto lo nececito para obtener una fecha limite de pago en mi tarea. es decir para decir que si un cliente tomo un prestamo hoy x dia su limite de pago sera en 1 mes exacto despues de dicha fecha, para poder ponerle un recargo.
Sabias que podrias tener problemas con un prestamo realizados entre el 29 y 31 de un mes, puesto que algunos meses no llegan a 31 y Febrero no llega siquera a 30, solo a 28 y a veces a 29 (cada 4 años).

Una solucion es que los prestamos realizados entre el 29 al 31 sean llevados al dia 28 o al dia 1 del proximo mes. Asi no tendrias problemas.

Con respecto a sumar las fechas tienes :

IncDay(fecha) para sumar 1 dia
IncMounth(...) para sumar 1 mes
IncYear(...) Sumar 1 Año.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 07-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
2: lo segundo es que quiero saber porque cuando hago una conversion de fecha con decodedate, para obtener la fecha en formato de numeros, cuando ago un calculo con los meses es decir si el mes actual esta entre 1 al 9 me depliega un mensage. esto va bien, pero cuando digo si esta entre 10 y 12 no me reconoce estos meses porque despues de 9 vuelve a 0. como puedo resolver esto.
Muestranos el codigo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 07-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Dependiendo de cómo aborde la cuestion, puede ser muy sencillo el tema.

Como sabemos una fecha es un Flotante, la parte entera indica los días transcurridos desde el inicio del calendario (01/01/1900) y la parte fraccionaria es la hora transcurrida desde media noche.

Si a una fecha le sumamos un número entero, estamos sumando días, y no importa si el mes tiene 28 ó 31 días; la fecha resultante será una fecha válida.

Lo principal es entender la forma que quiere el cliente, me explico, si quiere sumar 1 mes a la fecha... pues vale, pero: ¿cuantos días se debe sumar? (Enero 31 días, Febrero 28 días, Marzo 30) ¿Cuantos días se debe sumar realmente?

Las rutinas:

IncDay
IncMonth
IncYear

simplemente suma la cantidad que se le pase por parámetro y garantiza que el resultado será una fecha válida, pero ¿realmente es lo que necesita tu cliente?

Ejemplo:
Desde el 15/01/2000 hasta el 15/02/2000 no van los mismos días de préstamo que desde el 15/02/2000 hasta el 15/03/2000 porque puede ser bisiesto, porque el mes tiene 28 días, etc.


Si no recuerdo mal, estan las rutinas
DaysInYear
DaysInAYear
etc. (mira la unidad DateUtils entera, tiene muy buenas rutinas)

Pasando todo a días y sumando jamás tendrás problemas.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 08-10-2006
Avatar de Jheysson13
Jheysson13 Jheysson13 is offline
Miembro
 
Registrado: abr 2006
Posts: 133
Poder: 19
Jheysson13 Va por buen camino
gracias a los dos por las rutinas de para poder sumar la fechas esto me servira para mi tarea. es justo lo que estaba buscando gracias.

en cuanto a la segunda parte perdon por no haber mostrado el codigo lo pense justo despues que envie la pregunta y ya no tube mas tiempo para mostrarlo, pero aki le muestro a ver si me entienden:
Código Delphi [-]
var presente:tdatetime;
var mes,dia,ano:word;
begin
presente:=now;
decodedate(presente,ano,mes,dia);
fecha1.Caption:=inttostr(dia);
fecha2.Caption:=inttostr(mes);
fecha3.Caption:=inttostr(ano);
     
if fecha2.Caption<='4' then
begin n:='1'; 
end else
if ((fecha2.Caption>'4') and (fecha2.Caption<='8')) then
begin n:='2'; 
end else
if  (fecha2.Caption>'8')then begin
n:='3'; 
 end;
en las dos primeras condiciones todo funciona bien, pero cuando el mes supera el numero 9 me parece que toma el valor de 0 (cero) y vuelve a contar desde 1 en ves de 10,11,12 que serian octubre,nov,dic. por lo que no obtengo los resultados a partir del mes 10.
espero entiendan esto.
gracias de nuevo.

Última edición por vtdeleon fecha: 08-10-2006 a las 04:20:47.
Responder Con Cita
  #6  
Antiguo 08-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola Jheysson13, el problema es sencillo. Estas comparando texto y no números, cuando tu comparas:

Código Delphi [-]
  if (fecha2.Caption>'8')then begin

si fecha2.caption vale '10' la comparación devuelve FALSE porque la cadena de texto '10' es menor que la cadena de texto '8', ya que cuando se compara texto se realiza carácter a carácter, es decir es mayor el que tiene el primer carácter mayor.
Responder Con Cita
  #7  
Antiguo 08-10-2006
Avatar de Jheysson13
Jheysson13 Jheysson13 is offline
Miembro
 
Registrado: abr 2006
Posts: 133
Poder: 19
Jheysson13 Va por buen camino
oooooooooooooooooooooooooooooo, pero que error mas bobo y no lo pude ver. gracias amigo y disculpa mi ignorancia. gracias de nuevo y salu2
Responder Con Cita
  #8  
Antiguo 08-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por Lepe
Si no recuerdo mal, estan las rutinas
DaysInYear
DaysInAYear
etc. (mira la unidad DateUtils entera, tiene muy buenas rutinas)

Pasando todo a días y sumando jamás tendrás problemas.
Tienes razon en que no habra problemas, pero como él habia dicho
Cita:
esto lo nececito para obtener una fecha limite de pago en mi tarea. es decir para decir que si un cliente tomo un prestamo hoy x dia su limite de pago sera en 1 mes exacto despues de dicha fecha, para poder ponerle un recargo.
Queria aclararle esos puntos, qeu a mi entender seria mejor cuadrarlo a dias entre 1 y 28, los cuales todo mes tiene.

Jheysson13, edita tu mensaje y chequea como he puesto tu codigo. Veras que tiene unas etiquetas que resaltan el codigo. Seria bueno que estudiaras como se utilizan las etiquetas para delphi, sql y demas... en mi firma puedes encontrar los enlaces.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 08-10-2006 a las 04:22:38.
Responder Con Cita
  #9  
Antiguo 08-10-2006
Avatar de Jheysson13
Jheysson13 Jheysson13 is offline
Miembro
 
Registrado: abr 2006
Posts: 133
Poder: 19
Jheysson13 Va por buen camino
jejej tienes razon con la forma que explicas lo que estaba buscando sobre obtener la fecha cuadrando a 28 dias el mes. gracias por ello.


por otra parte me causo gracia ver el codigo que habia puesto para mostrar las conversiones de fechas. jejeje por un momento pense que se edito solo el codigo en delphi hasta que lei mas abajo tu recomendaciones gracias nuevamente y lo tomare en cuenta.

Jheysson13, edita tu mensaje y chequea como he puesto tu codigo. Veras que tiene unas etiquetas que resaltan el codigo. Seria bueno que estudiaras como se utilizan las etiquetas para delphi, sql y demas... en mi firma puedes encontrar los enlaces.
Responder Con Cita
  #10  
Antiguo 08-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Bien

Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
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
Calculos en una Tabla silviodp Conexión con bases de datos 18 02-02-2010 21:38:34
Calculos con Rave5 idatejo Conexión con bases de datos 5 15-12-2004 00:40:03
Calculos Aleca OOP 2 18-08-2004 18:31:43
calculos buitrago Firebird e Interbase 7 20-07-2004 04:42:24
Calculos en una tabla silviodp Conexión con bases de datos 8 07-04-2004 18:58:09


La franja horaria es GMT +2. Ahora son las 23:03:40.


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