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 10-01-2005
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
funcion duracion

hola gente, gracias de antemano por su ayuda.

tengo que calcular el tiempo transcurrido entre dos fechas y mostrarlo en formato leible para humanos.

ejemplo

entre '2004-12-15 12:00' y '2005-01-17 13:00' daria como resultado

1 Mes, 2 Días y 1 hora

es un calculo muy usado y supongo que debe existir .....

tengo esta funcion php, quizas alguien sepa traducirla.

Código:
function duration($duration) {

   $jours = floor(($duration/86400));
   $duration = $duration % 86400;
   $heures = floor(($duration/3600));
   $duration = $duration % 3600;
   $minutes = floor(($duration/60));
   $duration = $duration % 60;
  
   printf('%dj %02dh %02dmin',$jours,$heures,$minutes);

}

donde floor es como int y % es mod

el problema es que en delphi usar estos operadores entre si trae problemas de compatibilidad de tipos


saludos
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #2  
Antiguo 10-01-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Podrías usar las funciones que ya vienen en delphi:

Código Delphi [-]
...

uses
  DateUtils;

function Duracion(Ahora, Antes: TDateTime): string;
var
  AYears: Integer;
  AMonths: Integer;
  ADays: Integer;
  AHours: Integer;
  ADuracion: string;

begin
  AYears := YearsBetween(Ahora, Antes);
  AMonths := MonthsBetween(Ahora, Antes);
  ADays := DaysBetween(Ahora, Antes);
  AHours := HoursBetween(Ahora, Antes);
  if AYears > 0 then
    ADuracion := Format('%d año(s) ', [AYears]);
  if AMonths > 0 then
    ADuracion := ADuracion + Format('%d mes(es) ', [AMoths]);
  if ADays > 0 then
    ADuracion := ADuracion + Format('%d día(s) ', [ADays]);
  if AHours > 0 then
    ADuracion := ADuracion + Format('%d hora(s)', [AHours]);
  Result := ADuracion
end;

Esta función la hice al vuelo, sin probarla, puedes usarla como referencia para lo que deseas hacer. Para mayor información sobre las funciones y procedimientos de tratamiento de Fechas, busca en la ayuda de delphi por: Datetime routines.

Espero te sirva...


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


La franja horaria es GMT +2. Ahora son las 17:58:15.


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