Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-07-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Question Diferencia de minutos entre dos TDateTime

Un saludo primero que nada, tengo un problema al sacar la diferencia entre 2 variables TDateTime, almaceno en 2 variables tiempo1, tiempo2 y almaceno la diferencia en otra variable TDateTime.

Código Delphi [-]
tiempo1:=StrToDateTime('29/07/2011 12:08:00');
tiempo2:=StrToDateTime('29/07/2011 13:10:00');

//he probado con estas funciones pero ninguna me ha resultado y lo que está comentado es el resultado que arrojan cuando hago.

      diferencia:=MinuteSpan(tiempo1,tiempo2);
      showmessage(DateTimeToStr(diferencia));
      //  01/03/1900 11:59:59 PM
      diferencia:=MinutesBetween(tiempo1,tiempo2);
      showmessage(DateTimeToStr(diferencia));
      //  01/03/1900
      diferencia:=tiempo1-tiempo12;
      showmessage(DateTimeToStr(diferencia));
       //30/12/1899  1:02:00 AM

La verdad es que ya busqué en bastantes hilos de este foro y he quedado más confundido, espero que puedan ayudarme y de antemano muchas gracias.
Responder Con Cita
  #2  
Antiguo 29-07-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

¿Ya verificaste bien cual es el tipo de dato que devuelven esas funciones? Por que según creo recordar, devuelven tipos enteros y no tipos TDateTime.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 29-07-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
De hecho me interesa recuperarlo como entero para saber si hay una diferencia menor a 10 minutos pero la verdad soy nuevo en esto y estaba investigando pero me he confundido más :s. Saludos!.
Responder Con Cita
  #4  
Antiguo 29-07-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Me imagino que revisaste en la ayuda de Delphi:

Cita:
Empezado por Delphi Help
From DateUtils.pas

Código Delphi [-]
function MinuteSpan(const ANow: TDateTime; const AThen: TDateTime): Double;

Description
Returns the number of minutes, including fractions thereof, between two specified TDateTime values.

Call MinuteSpan to obtain the difference, in minutes, between two TDateTime values. Unlike the MinutesBetween function, which only counts entire minutes, MinuteSpan reports incomplete minutes as a fraction of an entire minute.
Si te fijas, el valor devuelto por la función es del tipo Double, no TDateTime, esto es, que la forma correcta de mostrarlo sería:

Código Delphi [-]
ShowMessage(FloatToStr(Diferencia));  // Donde Diferencia: Double;

Si usas la función MinutesBetween, el valor devuelto es un Int64 y la forma de mostrarlo sería:

Código Delphi [-]
ShowMessage(IntToStr(Diferencia));  // Donde Diferencia: Integer;



Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #5  
Antiguo 29-07-2011
jlrdz jlrdz is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 50
Poder: 14
jlrdz Va por buen camino
Cierto, ya he visualizado bien el resultado y muchísimas gracias por su ayuda, el error estaba en mí. Saludos.
Responder Con Cita
  #6  
Antiguo 29-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por jlrdz Ver Mensaje
De hecho me interesa recuperarlo como entero para saber si hay una diferencia menor a 10 minutos pero la verdad soy nuevo en esto y estaba investigando pero me he confundido más :s. Saludos!.
Talvez solamente necesitas esto:
Código Delphi [-]
if MinuteSpan(tiempo1,tiempo2) > 10 then
begin
    // ....
end;

Saludos,
Chris

PD.: Ten cuidado con la función StrToDateTime. Según la ayuda de Delphi:

Cita:
Empezado por Ayuda de Delphi
Converts a string to a TDateTime value.

Pascal
function StrToDateTime(const S: string): TDateTime; overload;
function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload;

File
SysUtils

Description
Call StrToDateTime to parse a string that specifies a date and time value. If S does not contain a valid date, StrToDateTime raises an EConvertError exception.

The S parameter must use the current locale's date/time format. In the US, this is commonly MM/DD/YY HH:MM:SS format. Specifying AM or PM as part of the time is optional, as are the seconds. Use 24-hour time (7:45 PM is entered as 19:45, for example) if AM or PM is not specified.

Year values between 0 and 99 are converted using the TwoDigitYearCenturyWindow. This value is stored either in a global variable (first form) or as a field in the FormatSettings parameter (second form) See "Currency and Date-Time Formatting Variables" for more information.

The first form of StrToDateTime is not thread-safe, because it uses localization information contained in global variables. The second form of StrToDateTime, which is thread-safe, refers to localization information contained in the FormatSettings parameter. Before calling the thread-safe form of StrToDateTime, you must populate FormatSettings with localization information. To populate FormatSettings with a set of default locale values, call GetLocaleFormatSettings.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
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
calculo de diferencia entre dos horas y minutos gonza_619 Varios 1 22-05-2010 20:35:31
Diferencia 2 Dias entre Tdatetime (delphi) y Datetime (SQL server) sinalocarlos Varios 2 10-05-2007 03:00:38
Numero de dias entre fechas (TDateTime) sierraja Varios 4 26-04-2005 18:29:02
minutos entre dos fechas jmlifi Firebird e Interbase 3 15-04-2005 12:39:36


La franja horaria es GMT +2. Ahora son las 03:27:45.


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