PDA

Ver la Versión Completa : problemas con datetime


majosf
31-08-2005, 20:58:58
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.


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
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,


(...) 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:


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
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!

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,


(...) 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.


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.