Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2004
Avatar de Sotrono
Sotrono Sotrono is offline
Miembro
 
Registrado: abr 2004
Ubicación: Buenos Aires - Argentina
Posts: 396
Poder: 23
Sotrono Va por buen camino
No encontre nada sobre las funciones HoursBetween, MinutesBetween, SecondsBetween, etc. Y de la unica forma que lo puedo hacer es como dijo sanxpue.
Responder Con Cita
  #2  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola. Te voy a dar autorización de usar las siguientes rutinas.. siempre que pongas una referencia en tu programa...

Código:
Function jachHoursBetween(Time1, Time2 : TDateTime) : Double;

Begin
  result := Time2 - Time1 * 24;
End;

Function jachMinutesBetween(Time1, Time2 : TDateTime) : Double;

Begin
  result := (Time2 - Time1) * 1440;
End;

Function jachSecondsBetween(Time1, Time2 : TDateTime) : Double;

Begin
  result := (Time2 - Time1) * 86400;
End;

Procedure jachHMSBetween(Time1, Time2 : TDateTime; var h,m,s : Word);

Begin
  h := trunc(jachHoursBetween(Time1, Time2));
  m := trunc(jachMinutesBetween(Time1, time2)) mod 60;
  s := trunc(jachSecondsBetween(Time1, time2)) mod 60;
End;
Si time2 es menor a time1 te devolverá una cantidad negativa de horas/minutos/segundos. Si no queres este comportamiento... simplemente añadí un abs() a la llamada.

Las rutinas te devuelven un número que indica la cantidad total de horas, minutos o segundos transcurrida entre dos fechas...

Si las fechas son:

Time1 = 21/04/2004 05:25:00 am
Time2 = 22/04/2004 05:26:01 am

Te devolverán:

HoursBetween => 24.0169444444444444
MinutesBetween => 1441.0166666666667777
SecondsBetween => 86461.0

Si te es mas útil.. podes usar el procedimiento jachHMSBetween, que te devuelve las horas, minutos y segundos transcurridos entre dos fechas:

jachHMSBetween => h=24, m=1, s=1 (24:01:01)

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 22-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Muy bonitas rutinas jachguate, no sé por qué me suena haberlas visto en algún lugar...

Están perfectas, nada más le integraría el trunc a las funciones en sí.

Por lo que veo estas funciones aparecieron hasta la versión 6 de Delphi.

// Saludos
Responder Con Cita
  #4  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cool

Cita:
Empezado por roman
no sé por qué me suena haberlas visto en algún lugar...
En donde??? si acabo de inventarmelas... en base a los nombres dados, y agregando el ya tradicional prefijo jach, para evitar las colisiones...

Eso si, la forma del cálculo, pues no es nada del otro mundo... no trato de atribuirme la idea original, pero si que soy el autor de estas. Conrespecto a lo del trunc.. podriamos sobrecargar las funciones, pues a mi me parece que también la parte decimal puede ser muy útil para realizar cálculos, por ejemplo, si tenes un precio por hora... simplemente multiplicas el precio por jachHoursBetween y listo

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Pensandolo algo mas despacio... me parece que una función no se puede sobrecargar en base al tipo de dato devuelto por la misma... entonces habria que darles un nuevo nombre... incluso agregar un parámetro (redondear) para cambiar de comportamiento y no solo truncar sino también añadir la posibilidad de redondear... en fin... pa'que reinventamos la rueda, si en d6 ya existen... pues usemos esas, y pa'los que estamos abajo de d6.. ahi están estas otras.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 22-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
Eso si, la forma del cálculo, pues no es nada del otro mundo... no trato de atribuirme la idea original, pero si que soy el autor de estas.
Lo sé perfectamente. De hecho tú método me gusta más. Vamos, es cómo uno lo pensaría. Es curioso, pero al ver el código de borHoursBetween, borMinutesBetween, etc. me quedé pensando en como algunas cosas llegan a niveles absurdos de generalización. Si te has fijado en dicho código, que en esencia es el mismo, notarás que usan constantes como:

HoursPerDay = 24
MinsPerHour = 60
SecPerMin = 60
MSecsPerSec = 100

y me pregunto:

¿es que acaso existe la posibilidad de que en algún momento cambie el número de horas por día o el de minutos por hora????

O quizá es que mi visión es corta y no me doy cuenta de que se preparan para hacer cálculos una vez que poblemos Marte u otros planetas .

// Saludos
Responder Con Cita
  #7  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
pues al paso que vamos, se va a poblar primero la luna... pero alli cómo medirian los dias???

Ya en serio.. supongo que es para hacer legible el código...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 17-07-2007
josesantho josesantho is offline
Registrado
 
Registrado: may 2007
Posts: 2
Poder: 0
josesantho Va por buen camino
Talking Resta de Time (h:m:S) Calculo Exacto

Este procedimiento lo obtube de una formula vieja que usaba en visual foxpro hace muchos year,, quizas le puede ser de ayuda:

lo que hago es que con los segundos que me resultan de : SecondsBetween,,hago todos los calculos para obtener las horas, minutos y segundos exactos..
ahi le va


var
a,b,c,d,e,,:integer;
q0,q1:string;
fl0:Currency;
begin

c := SecondsBetween(Queryhora1.Value,Queryhora2.Value) + 1;
b := (c div 3600);
q1 := inttostr(b);
Edit5.Text := IntToStr(c);
Edit2.Text := q1;

d := (c-(b*3600)) div 60;
fl0 := int(d);
Edit3.Text := CurrToStr(fl0);

e := (c mod 60) - 1;
Edit4.Text := IntToStr(e);

Esper que le sea de ayuda
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 06:56:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi