
CREAR UNA NUEVA FECHA
#1
Escrito 13 noviembre 2012 - 02:33
bueno mi problema radica en que tengo un dbedit= con formato fecha
y la fecha que tomo es la del sistema
dbfecinicial=11/11/2012
pero me gustaria que la fecha final
quedara
dbefecfinal=11/12/2012
La inicial la tomo del sistema con el Date();
pero si le sumo 30 dias, no siembre
en todos los meses queda el dia igual aveces queda el 10 0 el 9?
Como podria solucinarlo????
Gracias
#2
Escrito 13 noviembre 2012 - 02:56

Puedes hacer uso de la función de Delphi
function IncMonth( const Date: TDateTime; NumberOfMonths: Integer = 1 ): TDateTime;
La cual recibe como parámetros la fecha inicial y el número de meses a incrementar...
Saludox !

#3
Escrito 13 noviembre 2012 - 04:09
...dbfecinicial=11/11/2012 pero me gustaria que la fecha final quedara dbefecfinal=11/12/2012. La inicial la tomo del sistema con el Date(); pero si le sumo 30 dias, no siembre en todos los meses queda el dia igual a veces queda el 10 0 el 9? Como podria solucinarlo????...
Podrías utilizar el método que acá en el trabajo usamos:
iLaFecha := Trunc(dLaFecha); iLaFecha := iLaFecha + 30; dbfecinicial.Date := iLaFecha;
La razón es fácil. Internamente, cualquier fecha es un entero, ya que contabiliza un 'n' número de días a partir de una fecha base, y puede ser asignado directamente como un entero a un campo de fecha.

#4
Escrito 13 noviembre 2012 - 04:16
...dbfecinicial=11/11/2012 pero me gustaria que la fecha final quedara dbefecfinal=11/12/2012. La inicial la tomo del sistema con el Date(); pero si le sumo 30 dias, no siembre en todos los meses queda el dia igual a veces queda el 10 0 el 9? Como podria solucinarlo????...
Podrías utilizar el método que acá en el trabajo usamos:
delphi
iLaFecha := Trunc(dLaFecha); iLaFecha := iLaFecha + 30; dbfecinicial.Date := iLaFecha;
La razón es fácil. Internamente, cualquier fecha es un entero, ya que contabiliza un 'n' número de días a partir de una fecha base, y puede ser asignado directamente como un entero a un campo de fecha.
Ésta solución no genera el mismo problema que nos comenta discorf1978 ???...

Se pretende sumar un mes, no exactamente 30 días... (por ejemplo Fecha Inicial: 5 de Mayo, si se suman 30 días = 4 de Junio, si se suma un mes = 5 de Junio)...
Saludox !

#5
Escrito 13 noviembre 2012 - 04:19
Ésta solución no genera el mismo problema que nos comenta discorf1978 ???...
![]()
Se pretende sumar un mes, no exactamente 30 días... (por ejemplo Fecha Inicial: 5 de Mayo, si se suman 30 días = 4 de Junio, si se suma un mes = 5 de Junio)...
Saludox !
¿Era éso?





#6
Escrito 13 noviembre 2012 - 08:18
#7
Escrito 14 noviembre 2012 - 09:14
#8
Escrito 15 noviembre 2012 - 11:37
Errrrrrrrr (o el sonido que se haga en los juegos televisos de trivia).La razón es fácil. Internamente, cualquier fecha es un entero, ya que contabiliza un 'n' número de días a partir de una fecha base, y puede ser asignado directamente como un entero a un campo de fecha.
Las fechas o se guardan como entero. Se guardan en coma flotante. De hecho, las fechas son la parte entera, mientas que las horas, minutos y segundos son los decimales. Entonces, vendría a ser algo como: fecha.hora
De esto se aprecia que no funciona del todo tu propuesta. Lo sano es ir por la función IncMonth que ha recomendado Fenareth.
Saludos,
Saludos,