Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ayuda TDateTime (https://www.clubdelphi.com/foros/showthread.php?t=40687)

Ge0Ks 23-02-2007 20:38:23

Ayuda TDateTime
 
Hola a todos, me surgio una pequeña duda, tengo dos TDateTime y queria saber como se puede calcular la diferencia en meses que hay en cada una de ellas, si alguien sabe como le agradeceria la respuesta :D

Caral 23-02-2007 20:42:55

Hola
Esto lo haria en dias.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
FechHora1 :TDateTime;
FechHora2 :TDateTime;
Dias :Integer;
begin
   FechHora1:= DateTimePicker1.DateTime;
   FechHora2:= DateTimePicker2.DateTime;
   Dias := Trunc (FechHora2) - Trunc (FechHora1);
   Edit1.Text:= IntToStr(Dias);
end;
Nota: no se si en builder.
Saludos

Ge0Ks 23-02-2007 21:24:59

ehm si era en builder pero yo estoy usando c++ borland builder xD pero me sirvio igual la logica del algoritmo :D muchas gracias por todo y lo solucione asi :D

Cita:

TDateTime FechHora1 = StrToDate("25/11/2006");
int Dias;
ShowMessage(DateToStr(FechHora1.CurrentDate()));
Dias = FechHora1.CurrentDate() - FechHora1 ;
ShowMessage(IntToStr(Dias));
tambien si se quieren saber los meses (no es preciso) se puede hacer lo sgt:

Cita:

TDateTime FechHora1 = StrToDate("25/11/2006");
int Dias;
ShowMessage(DateToStr(FechHora1.CurrentDate()));
Dias = FechHora1.CurrentDate() - FechHora1 ;
ShowMessage(IntToStr(Dias/30));

oracle 24-02-2007 17:51:44

No existe alguna otra función que devuelva los meses o los años con mayor exactitud????

Saludos....

Marian0 25-02-2007 16:19:00

Aprovecho el thread para consultarles cómo puedo hacer para sumar Meses a un determinado TDateTime. Por ejemplo
Si tengo un TDateTime en el 21/02/2007 y quiero sumarle 11 meses, es decir que devuelva 21/01/2008. Cómo podría hacerlo sin demaciadas complicaciones??
Me interesa aprender como trabajar bien con fechas, alguien tiene algun tutorial, artículo o libro para leer? Le agradecería lo comparta con nosotros.


Saludos


Marian0:)

Lepe 26-02-2007 16:10:29

Supongo que será igual que en Delphi.

Una fecha es un Double, la parte entera significa los días que han pasado desde el calendario base (31/12/1899). La parte fraccionaria, indica la hora.

para sumar 1 día, sumamos uno a la fecha
Código Delphi [-]
  fecha := now;
  fecha := fecha +1;

si queremos sumar 1 hora, hacemos el cálculo: 1 día tiene 24 horas:
Código Delphi [-]
  fecha := now;
  fecha := fecha +(1/24);

Basta realizar el cálculo para sumar minutos o segundos.

También puedes usar las rutinas:
- IncHour
- IncDay
- IncMonth
- Incyear

de la unidad Dateutil.pas (busca en la ayuda una de esas funciones y sabrás el include que has de hacer.

Para sumar meses, te recomiendo IncMonth que supongo controlará los meses que terminan en 31, 30 y 28.

Saludos


La franja horaria es GMT +2. Ahora son las 21:07:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi