Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2007
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
Question resultado de restar 2 horas

saludos a todos los del foro nuevamente...

estuve buscando en los foros viejos, y encontre informacion sobre la resta de 2 horas, lo tuve leyendo y analizando. bueno mi inquietud es la siguiente

restar 2 horas HE, HS y que me de un total(08:23:19) por ejemplo y hacer una condicion si es mayor o menor de 8 horas, con el codigo que puse me da el siguiente resultado= 08:23:19 a.m. y no quiero que aparezca (a.m.), otra cosa es que cuando pasa de 12 horas se vuelve loco, es decir si son 13 horas dice 1 hora, y el resultado no me da, bueno el codigo que use es el siguiente..

her hora de entrada
hsr hora de salida
hora resultado de la resta

Código:
var
  DifH, DifM, DifS, DifMs: Word;
  her,hsr,hora:ttime;
 

          //las hora estan en la tabla Horas
          
          her:=Tabla.IBQHorasHE.AsDateTime;
          hsr:=Tabla.IBQHorasHS.AsDateTime;


  DecodeTime((hsr) -(her), DifH, DifM, DifS, DifMs);
  
hora:= EncodeTime(DifH, DifM, DifS, DifMs);//aqui tranformo el resultado a 
tipo hora pero no se como cambiar el formato de am/pm 

  if hora>=strtotime('06:00:00') then begin
             cesta:=cesta+1;//esto es un contador
  end;

 
      end;
necesito hacer que "hora" me de 26:41:17 por ejemplo que si pasa mas de 12 horas no se tranforme a 1 o 2 horas...

acepto sugerencia de cambiar todo el codigo por uno mejor gracias.........................................................................
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #2  
Antiguo 21-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Hola,

no se si te servirá de algo ...
Ya que TTime = TDateTime ...

Por que no lo haces así:

Para sumar dos horas a Now --> DosHorasMas := Now+((1/24)*2)
Para restar dos horas a Now --> DosHorasMenos := Now-((1/24)*2)

y los calculos los haces con la fecha incluida ...
__________________
Sotoca Web
Responder Con Cita
  #3  
Antiguo 21-02-2007
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
fdelamo... puedes darme un poco mas de detalles por favor porque la verdad no entendi mucho como usarlo, podrias ser mas especifico o donde y como lo uso???????????
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #4  
Antiguo 21-02-2007
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
alejandro porque cuando resto las dos horas directamente me pasa lo mismo, si da mas de 12 horas, ejemplo 13 horas me dice 1 hora, y eso es lo que quiero corregir....
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #5  
Antiguo 21-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Los valores TTime, TDate y TDateTime, representan las fechas de la siguiente manera: La parte entera es la fecha (la fecha 0 creo que es 31/12/1899, creo) y los decimales la hora, por tanto, una hora es 1/24, un minuto 1/24/60 ...

Si quieres sumar dos horas Fecha+2/24

No se si me explico ....
__________________
Sotoca Web
Responder Con Cita
  #6  
Antiguo 21-02-2007
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
ok, entendi la logica, pero si tengo las 2 horas 08:13:14 a.m. y 09:52:17 p.m. como expreso esas 2 con el metodo que me diste?????????
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #7  
Antiguo 21-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Al tenerlo en un TDate, TTime o TDateTime ya lo tienes así, ¿o es que tienes esas horas en texto?
__________________
Sotoca Web
Responder Con Cita
  #8  
Antiguo 21-02-2007
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
No se pero porque no restas directamente las dos horas, eso te daria un número por ejemplo:

14:00:00 - 12:00:00 = 2.00

Tal ves de esta forma te sirve por lo menos para hacer los calculos.
__________________
Suerte
Alejandro
Responder Con Cita
  #9  
Antiguo 21-02-2007
Avatar de nuk3zito
nuk3zito nuk3zito is offline
Miembro
 
Registrado: ago 2003
Ubicación: "Z" Land
Posts: 244
Poder: 21
nuk3zito Va por buen camino
El windows es quien te define el formato de a.m. y p.m. o formato 24 Hrs.
Búscale por ese lado... y si es necesario, haz que tu aplicación cambie el formato cuando lo uilices.
Ahora que... pudieras agarrar la hora y "decodificarla" y construir tu propia cadena si es que no quieres cambiar el formato de hora de windows.

Suerte!
__________________
Tiempo y ocasión acontecen a todos!
Responder Con Cita
  #10  
Antiguo 21-02-2007
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
Si entendi correctamente te interesa saber cuanto tiempo paso entre dos horas distintas. Si es así lo que tendrias que hacer es:

vartipofloat:= Hora1-Hora2;

En vartipofloat tendras como resultado la cantidad de horas y minutos que pasaron, las horas en la parte entera y los minutos en los decimales.

Suerte
__________________
Suerte
Alejandro
Responder Con Cita
  #11  
Antiguo 23-02-2007
Avatar de CarlosHernandez
CarlosHernandez CarlosHernandez is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
CarlosHernandez Va por buen camino
listo, gracias a todos por responder, ahora estoy probando todo y cuando me de perfecto publico el codigo......
__________________
begin
Elverdugo79@hotmail.com
end;
Responder Con Cita
  #12  
Antiguo 24-03-2009
NeoNew NeoNew is offline
Miembro
 
Registrado: mar 2009
Ubicación: Bogotá
Posts: 49
Poder: 0
NeoNew Va por buen camino
Código Delphi [-]
Function TimeBetween(xTimeFrom,xTimeTo: TTime): TTime;
var
  t12,t24 : TTime;
begin
  t12 := StrToTime('12:00:00');
  t24 := StrToTime('23:59:59');
  if xTimeFrom > t12  then
  begin
    Result := t24 - xTimeFrom + xTimeTo;
  end else
  begin
    Result := xTimeTo - xTimeFrom;
  end;
end;
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
restar fechas sql Oraxtar SQL 16 21-01-2008 22:01:44
Restar fechas Acker Varios 4 07-11-2005 14:11:51
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
restar fechas para comparar resultado @-Soft Conexión con bases de datos 5 14-07-2003 18:33:03


La franja horaria es GMT +2. Ahora son las 07:40:30.


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