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

Tema Cerrado
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2008
saltamirano saltamirano is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
saltamirano Va por buen camino
Resta de horas y minutos

Resta de horas y minutos
Cita:
Empezado por angara
Probe el codigo me funciona para las horas pero en mi caso tambien nececito los minuto y segundos, para un sistema de control de ingreso de personal
gracias


Saludos amigos:

He revisado este hilo y me ha servido de mucha utilidad, tengo dos DateTimePicker, en los cuales se ingresa Hora de Inicio y Hora de Fin, en mi aplicación requiero restar las dos horas para obtener el tiempo ocupado. Tengo el siguiente código:

procedure TForm_Soporte.DateTimePicker_HraIniChange(Sender: TObject);
var dMiHraIni : TTime;
var HraIniStr: string;
begin
dMiHraIni := DateTimePicker_HraIni.Time;
HraIniStr := (TimeToStr(dMiHraIni));
self.DBEdit_HraIni.Text := HraIniStr;
end;


procedure TForm_Soporte.DateTimePicker_HraFinChange(Sender: TObject);
var dMiHraFin, tiempo1, tiempo2 : TTime;
var HraFinStr, dif_hra, dif_min, dif_seg, time: string;
var dif_hra_int, dif_min_int : integer;
var min_calc, seg_calc: integer;


begin
dMiHraFin := DateTimePicker_HraFin.Time;
HraFinStr := (TimeToStr(dMiHraFin));
self.DBEdit_HraFin.Text := HraFinStr;

tiempo1:= DateTimePicker_HraFin.Time;
tiempo2:= DateTimePicker_HraIni.Time;

dif_hra := inttostr(HoursBetween(tiempo2 , tiempo1));
dif_hra_int := strtoint(dif_hra);


if dif_hra_int > 0 then
begin
min_calc := ((MinutesBetween(tiempo2 , tiempo1))mod (dif_hra_int * 60));
dif_min := inttostr(min_calc);
end
else
begin
dif_min := inttostr(MinutesBetween(tiempo2 , tiempo1));
end;


if min_calc > 0 then
begin
seg_calc := (SecondsBetween(tiempo2 , tiempo1))mod (min_calc * 60);
dif_seg := inttostr(seg_calc);
end
else
begin
dif_seg := inttostr(SecondsBetween(tiempo2 , tiempo1));
end;
}
time := dif_hra + ':'+ dif_min + ':'+ dif_seg;
self.DBEdit_time.Text := time;
self.DBEdit_time.Show
end;


Al restar las horas por ejemplo: 8:00 a 14:30 el resultado es de: 6:29 y no
6:30 como debería ser.

Por fa si alguien tiene idea de lo que está pasando necesito una ayudita. Mil Gracias!!
  #2  
Antiguo 23-01-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Hola, Por Favor trata de usar las etiquetas Delphi:

Código Delphi [-]
procedure TForm_Soporte.DateTimePicker_HraIniChange(Sender: TObject);
var dMiHraIni : TTime;
var HraIniStr: string;
begin
dMiHraIni := DateTimePicker_HraIni.Time;
HraIniStr := (TimeToStr(dMiHraIni));
self.DBEdit_HraIni.Text := HraIniStr;
end;

procedure TForm_Soporte.DateTimePicker_HraFinChange(Sender: TObject);
var dMiHraFin, tiempo1, tiempo2 : TTime;
var HraFinStr, dif_hra, dif_min, dif_seg, time: string;
var dif_hra_int, dif_min_int : integer;
var min_calc, seg_calc: integer;

begin
dMiHraFin := DateTimePicker_HraFin.Time;
HraFinStr := (TimeToStr(dMiHraFin));
self.DBEdit_HraFin.Text := HraFinStr;
tiempo1:= DateTimePicker_HraFin.Time;
tiempo2:= DateTimePicker_HraIni.Time;

dif_hra := inttostr(HoursBetween(tiempo2 , tiempo1));
dif_hra_int := strtoint(dif_hra);

if dif_hra_int > 0 then
begin
min_calc := ((MinutesBetween(tiempo2 , tiempo1))mod (dif_hra_int * 60));
dif_min := inttostr(min_calc);
end
else
begin
dif_min := inttostr(MinutesBetween(tiempo2 , tiempo1));
end;

if min_calc > 0 then
begin
seg_calc := (SecondsBetween(tiempo2 , tiempo1))mod (min_calc * 60);
dif_seg := inttostr(seg_calc);
end
else
begin
dif_seg := inttostr(SecondsBetween(tiempo2 , tiempo1));
end;
}
time := dif_hra + ':'+ dif_min + ':'+ dif_seg;
self.DBEdit_time.Text := time;
self.DBEdit_time.Show
end;

Ves que se ve mejor?

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
  #3  
Antiguo 23-01-2008
saltamirano saltamirano is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
saltamirano Va por buen camino
Resta de horas y minutos

Muchas Gracias enecumene y mil disculpas a todos
  #4  
Antiguo 23-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cierro este hilo, pues el tema ya se está tratando en este otro.

Por favor, ¡respeto a la guia de estilo!

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Tema Cerrado



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
Resta de horas didier Varios 24 18-11-2010 23:11:54
Resta de fechas Y horas Iskariote0087 Varios 3 05-12-2006 22:31:05
sumar horas y minutos acrophet Varios 1 29-01-2004 17:29:46
Sumar Horas o Minutos cso2000 Varios 2 19-06-2003 17:56:40
resta horas y minutos botones67 Varios 4 12-06-2003 18:55:54


La franja horaria es GMT +2. Ahora son las 16:12:57.


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