Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   problemas con datetime (https://www.clubdelphi.com/foros/showthread.php?t=24738)

majosf 31-08-2005 20:58:58

problemas con datetime
 
Hola!! Somos un grupo de chicas q stamos con el pfc. Necesitamos saber como sumarle dias a una fecha y q respete el 31 y los bisiestos.
Ayudarnos, q codigo seria?? Por ejemplo: es el 23/7/2005 y queremos sumarle 10 dias. Q devuelva 2/8/2005.

Muchas gracias!!:confused: :p

delphi.com.ar 31-08-2005 21:06:41

Si esa fecha la tienes un un TDateTime, simplemente le tienes que sumar dos enteros.

Código Delphi [-]
var
  AFecha: TDateTime;
begin
  {Convierte la cadena a un TDateTime
    Suponiendo que el formato es válido }
  AFecha := StrToDate('23/07/2005');

  {Realiza la operación aritmética}
  AFecha := AFecha + 2;

  {Convierte la fecha a un string y la mustra}
  ShowMessage(DateToStr(AFecha)); 
end;

Saludos!

dec 31-08-2005 21:21:39

Hola,

Me llamó la atención Federico, ¿porqué dos enteros? ¿porqué no usar una función como "IncDay"?

delphi.com.ar 31-08-2005 21:26:31

Cita:

Empezado por dec
Me llamó la atención Federico, ¿porqué dos enteros? ¿porqué no usar una función como "IncDay"?

Costumbre... ¡Recuerda que la unit DateUtils recién apareción en Delphi 6!


PD: No va al caso, pero observa la diferencia del código compilado de un método y el otro... :p

dec 31-08-2005 21:39:48

Hola,

Cita:

Empezado por Federico
(...) observa la diferencia del código compilado de un método y el otro (...)

Querrás decir tal vez que el resultado al cabo es el mismo con cualquiera de los dos métodos. Comprendo lo de que la unidad "DateUtils" no está disponible en las versiones anteriores a la sexta de Delphi y alabo tu decisión, entonces.

Debía haber probado antes el código que has puesto como ejemplo. Efectivamente, lo que se hace en el mismo es sumar dos días a la fecha en cuestión: comprobado y todo bien.

Lo que llamó mi atención fue a partir de lo que decía majosf:

Cita:

Empezado por majosf
Por ejemplo: es el 23/7/2005 y queremos sumarle 10 dias. Q devuelva 2/8/2005.

Esto es, al ver que sumabas dos enteros a la fecha y fijarme en que se pretendía "sumar" 10 días a la misma... pues de ahí que me preguntara, ¿cómo sumando dos enteros se consigue al cabo "sumar" 10 días a la fecha de marras?

Pero, como digo, ya he probado el ejemplo, y, efectivamente, tú sumas dos enteros, esto es, dos días, que podrían ser diez sumando diez enteros ;)

delphi.com.ar 31-08-2005 21:57:50

Cita:

Esto es, al ver que sumabas dos enteros a la fecha y fijarme en que se pretendía "sumar" 10 días a la misma... pues de ahí que me preguntara, ¿cómo sumando dos enteros se consigue al cabo "sumar" 10 días a la fecha de marras?
:p Simplemente escribí un ejemplo sin fijarme cuánto sumaban en su ejemplo!

Cita:

Empezado por dec
Querrás decir tal vez que el resultado al cabo es el mismo con cualquiera de los dos métodos.

No precisamente, no quería complicar el hilo, simplemente porque vamos a marear majosf`s, pero el código compilado de un IncDate es mucho mayor al de la simple adición, ya que no tiene una optimización similar a la función Inc y es tratada como cualquier función.... Solo un pequeño detalle ;).

PD: ¿Se borró un mensaje de este hilo?

Saludos!

dec 31-08-2005 22:07:06

Hola,

Cita:

Empezado por Federico
(...) pero el código compilado de un IncDate es mucho mayor al de la simple adición, ya que no tiene una optimización similar a la función Inc y es tratada como cualquier función....

Uy... me temo que a esas sutilezas no llegaré yo en mucho tiempo... Pero bien está saberlo, a alguien podrá aprovecharle, es de suponer.

Cita:

Empezado por Federico
PD: ¿Se borró un mensaje de este hilo?

Por mí podré decir que, en este Hilo, no borré ninguno de los que escribí. Ah, y gracias por todo Federico.


La franja horaria es GMT +2. Ahora son las 09:37:58.

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