Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Comparar fechas (https://www.clubdelphi.com/foros/showthread.php?t=72096)

Jucho69 27-01-2011 15:01:16

Comparar fechas
 
Hola amigos

Tengo una pequeña dificultad y no he logrado resolverla, ¿como se puede comparar dos fechas que estén almacenadas, digamos, en dos TEdit o Tlabel y definit cual es más actual o viceversa?

Saludos y gracias

Aleca 27-01-2011 15:13:43

Código Delphi [-]
  StrToDate(Edi1.Text) > StrToDate(Edi2.Text)
DateToStr(Fecha) pasa de fecha a texto.:)

rgstuamigo 27-01-2011 15:19:32

Pues teniendo los datos(correctamente) en los respectivos edit pues podemos hacer ésto en un Boton:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
if StrToDate(Edit1.Text)>StrToDate(Edit2.Text) then
  ShowMessage('La fecha del Edit1 es mayor')
else if StrToDate(Edit1.Text)then
      ShowMessage('La fecha del Edit2 es mayor')
     else
      ShowMessage('Las dos fechas son iguales');
end;

UN CONSEJO
En delphi existe controles(componentes) específicos para manejo de fechas y hora, especifiacmente estoy hablando del componente TDateTimePicker que se encuentra en la pestaña Win32 de la paleta de componentes; creo que es mucho mejor usar dos DateTimePicker en ves de los dos edits y así nos evitamos el estar usando la funcion StrToDate, sabiendo que el usuario puede escribir mal el formato de la fecha;)
Saludos...:)
Saludos...:)

Jucho69 27-01-2011 16:54:10

Hola Aleka y rgstuamigo

Es un gusto contactar con ustedes ya que me han ayudado varias veces, es cierto, el componente DateTimePicker es ideal para eso y lo he usado pero he tenido que hacer codigos innecesarios como este para separar los datos de las fechas

Código Delphi [-]
procedure TForm5.DateTimePicker1CloseUp(Sender: TObject);
  var t0,t1,t2,r0,r1,r2,f:string;  dia1,dia2,mes1,mes2,ano1,ano2,f1:integer;
   begin
    dxButton4.Enabled:=true;
     label10.Caption:=(DateToStr(DateTimePicker1.date));
      label11.Caption:=(DateToStr(DateTimePicker2.date));
        t0:=label10.Caption;delete(t0,3,10);
        t1:=label10.Caption;delete(t1,1,3);delete(t1,3,10);
        t2:=label10.Caption;delete(t2,1,6);
        r0:=label11.Caption;delete(r0,3,10);
        r1:=label11.Caption;delete(r1,1,3);delete(r1,3,10);
        r2:=Form1.ComboBox5.Text;
        dia1:=strtoint(t0); dia2:=strtoint(r0);
        mes1:=strtoint(t1); mes2:=strtoint(r1);
        ano1:=strtoint(t2);ano2:=strtoint(r2);
Gracias y me pondré a rectificar lo anterior

Saludos

rgstuamigo 27-01-2011 18:50:07

Cita:

Empezado por Jucho69 (Mensaje 389066)
... es cierto, el componente DateTimePicker es ideal para eso y lo he usado pero he tenido que hacer codigos innecesarios como este para separar los datos de las fechas

Código Delphi [-]
procedure TForm5.DateTimePicker1CloseUp(Sender: TObject);
  var t0,t1,t2,r0,r1,r2,f:string;  dia1,dia2,mes1,mes2,ano1,ano2,f1:integer;
   begin
    dxButton4.Enabled:=true;
     label10.Caption:=(DateToStr(DateTimePicker1.date));
      label11.Caption:=(DateToStr(DateTimePicker2.date));
        t0:=label10.Caption;delete(t0,3,10);
        t1:=label10.Caption;delete(t1,1,3);delete(t1,3,10);
        t2:=label10.Caption;delete(t2,1,6);
        r0:=label11.Caption;delete(r0,3,10);
        r1:=label11.Caption;delete(r1,1,3);delete(r1,3,10);
        r2:=Form1.ComboBox5.Text;
        dia1:=strtoint(t0); dia2:=strtoint(r0);
        mes1:=strtoint(t1); mes2:=strtoint(r1);
        ano1:=strtoint(t2);ano2:=strtoint(r2);

Para poder separar los datos de las fechas en dia, mes y año, podrías haber utilizado el procedure DecodeDate de la unidad SysUtils y extraer cada uno de ellos en una variable determinada mas o menos de la siguiente forma:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var dia,mes,anio:Word;
begin
DecodeDate(DateTimePicker1.Date,anio,mes,dia);//extraigo de la fecha los datos del año, mes y día en variables separada
 ShowMessage('El día es '+IntToStr(dia));//muestro el día
 ShowMessage('El Mes es '+IntToStr(mes));//muestro el mes
 ShowMessage('El año es '+IntToStr(anio));//muestro el año
end;
Saludos...:)

Jucho69 27-01-2011 22:52:19

Hola rgstuamigo

!Es justo lo que estaba buscando!, así ya se pueden utilizar los valores como se quieran independientemente del formato de la fecha, realmente uno se va a veces por el camino más largo de la Caperusita habiendo soluciones como la que me diste.

Está de más que te agradezco tu esfuerzo y los anteriores.

Un buen Saludo :D


La franja horaria es GMT +2. Ahora son las 08:17:02.

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