Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   funcion duracion (https://www.clubdelphi.com/foros/showthread.php?t=17466)

tango01 10-01-2005 20:43:09

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

maeyanes 10-01-2005 21:11:42

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.


La franja horaria es GMT +2. Ahora son las 23:22:19.

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