Cita:
Empezado por delphi.com.ar
Yo te recomendaría pasar los strings a un TDateTime y utilizar la función SecondsBetween .
PD: Es importante tener la premisa que para trabajar con fechas lo mejor es que estas sean fechas y no cadenas!
|
Hola, yo estoy totalmente de acuerdo contigo.
Cita:
Empezado por acertij022
Lamentablemente no es la socucion supon que hay que calcular la diferncia entre:
20070302000001
20070301235959
Igualmente muchas gracias
|
Lo que yo creo es que tu problema es que no sabes como 'pasar' de un string a un DateTime, aqui te pongo un ejemplo de como hacerlo.
Código Delphi
[-]
var
Inicial,Final: String;
FInicial,FFinal: TDateTime;
Duracion: Int64;
:::::::::
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Inicial := '20070301235946';
Final := '20070302000006';
FInicial := StrtoDateTime(Copy(Inicial,7,2)+'/'+
Copy(Inicial,5,2)+'/'+
Copy(Inicial,1,4)+' '+
Copy(Inicial,9,2)+':'+
Copy(Inicial,11,2)+':'+
Copy(Inicial,13,2));
FFinal := StrtoDateTime(Copy(Final,7,2)+'/'+
Copy(Final,5,2)+'/'+
Copy(Final,1,4)+' '+
Copy(Final,9,2)+':'+
Copy(Final,11,2)+':'+
Copy(Final,13,2));
Duracion := SecondsBetween(FFinal,FInicial);
Label1.Caption := DateTimetoStr(FInicial);
Label2.Caption := DateTimetoStr(FFinal);
Label3.Caption := InttoStr(Duracion);
end;
Esto puede no ser lo mejor ni muy elegante pero funciona, estuve usando diferentes variables y en algunos casos hay una diferencia de 1 segundo, quizas por cuestiones de redondeo, no se.
Saludos y espero te ayude.