Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2010
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Restar horas en formato string

Hola amigos..

Resulta que tengo 2 horas en formato string. ej. 22-10-03 y 23-10-05 y
necesito la diferencia en segundos entre ellas.

Busque una manera de convertirlas y usar las funciones de delphi, pero no he logrado avanzar.

Alguna sugerencia ??

Gracias
Responder Con Cita
  #2  
Antiguo 03-08-2010
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
separalos en horas minutos y segundos y con la funcion encodetime conviertes los valores, y con una resta normal y la funcion formatdatetime te muestra la diferencia
Responder Con Cita
  #3  
Antiguo 03-08-2010
rrf rrf is offline
Miembro
 
Registrado: ago 2003
Ubicación: S/C Tenerife, España
Posts: 454
Poder: 21
rrf Va por buen camino
Smile

Hola.
Aquí tienes una posible solución.
Lo probé y funcionó bien.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  hh1, mm1, ss1, hh2, mm2, ss2, hh3, mm3, ss3, nada : word ;
  TotalSegundos : integer ;
  aa, bb : string ;
  Tiempo1, Tiempo2, TFinal : TDateTime ;
begin

  aa := '20-15-03' ;
  hh1 := strtoint ( copy ( aa, 1, 2 ) ) ;
  mm1 := strtoint ( copy ( aa, 4, 2 ) ) ;
  ss1 := strtoint ( copy ( aa, 7, 2 ) ) ;
  Tiempo1 := EncodeTime( hh1, mm1, ss1, 0 ) ;

  bb := '22-18-09' ;
  hh2 := strtoint ( copy ( bb, 1, 2 ) ) ;
  mm2 := strtoint ( copy ( bb, 4, 2 ) ) ;
  ss2 := strtoint ( copy ( bb, 7, 2 ) ) ;
  Tiempo2 := EncodeTime( hh2, mm2, ss2, 0 ) ;

  Tfinal  := tiempo2 - Tiempo1 ;

//ShowMessage( TimeToStr ( Tiempo1) +#13+ TimeToStr ( Tiempo2) +#13+ TimeToStr ( Tfinal)  );

  DecodeTime( Tfinal, hh3, mm3, ss3, nada );
  TotalSegundos := hh3 * 3600 + mm3 * 60 + ss3 ;
  ShowMessage( 'Segundos: '+ inttostr ( TotalSegundos )  );

end;

Está probado en Delphi 7, aunque creo que funcionará bien en otras versiones.

Le puse valores fijos a los string (aa, bb) para la prueba, pero se puede adaptar para que funcione como una función que recibe los 2 string como parámetros y devuelve el número de segundos.

Salu2.

Ramón.
Responder Con Cita
  #4  
Antiguo 04-08-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En la Unit DateUtils, hay una función llamada SecondsBetween, que te da la diferencia en segundos entre dos fechas.

Creo que irá perfecta para lo que se necesita.

Código Delphi [-]
  hora1 := '20-15-03';
  hora2 := '22-18-09';
  // Cambiar los separadores
  hora1 := AnsiReplaceText(hora1, '-', ':');
  hora2 := AnsiReplaceText(hora2, '-', ':');
  // Diferencia en segundos
  seg := SecondsBetween(StrToTime(hora2), StrToTime(hora1));

Por supuesto, en la misma unit también están las funciones, DaysBetween, HourBetween, MilliseconsBetween,...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-08-2010
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Barbaro, muchas gracias a todos y disculpas por tardar en responder.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
resultado de restar 2 horas CarlosHernandez Firebird e Interbase 18 04-12-2010 00:30:37
Restar Horas ManuelPerez Varios 2 09-03-2008 22:30:00
Acerca de restar horas BetoAlonso Varios 4 18-01-2008 17:02:37
Restar 2 horas... CFPA86 Varios 1 17-10-2003 20:30:54
Restar horas en SQL/PLUS de ORACLE Chojj Oracle 6 12-08-2003 15:22:25


La franja horaria es GMT +2. Ahora son las 14:29:24.


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
Copyright 1996-2007 Club Delphi