Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Bibliotecas de código fuente > [GH Freebrary]
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-03-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Requerimiento de función que devuelva hora en varios formatos

¿Y que te parecería una función que devuelva la hora en varios formatos (entero, flotante, string)?

Es decir, yo le enviaría la hora en el formato de la máquina y que devolviese el valor en distintas escalas. Se me ocurriría una llamada así:

Código Delphi [-]
ghGetHour(ghFormato,Now);

Donde ghFormato sea el formato de destino.
0 = Integer.
1 = Double.
2 = String corto (hh:mm) [formato 12 horas]
3 = String corto (HH:mm) [formato 24 horas]
4 = String largo (HH:mm.ss) [formato 24 horas con segundos]
5 = String largo (HH:mm.ss mmm) [formato 24 horas con segundos y milisegundos]

Ahí me platicas, compadre, si te "late" la idea como para ingresarla a tu librería.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco

Última edición por Al González fecha: 28-03-2013 a las 01:46:06. Razón: Título un poco más descriptivo
Responder Con Cita
  #2  
Antiguo 28-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Felipe.

Es necesario más contexto para comprender el requerimiento. Las opciones de la 2 a la 5 se resuelven bien con la función nativa FormatDateTime.

En cuando a las opciones 0 y 1 te agradecería algunos ejemplos de valores de entrada con sus respectivos valores de salida.

Ahora, suponiendo que ya existiera la función que sugieres, ¿cómo la usarías? ¿Alguna pieza de código un poco más generosa para dar una idea? Resulta importante conocer el origen de este tipo de inquietudes.

Quedo a la espera de tu retroalimentación, saludos.

Última edición por Al González fecha: 28-03-2013 a las 01:49:34.
Responder Con Cita
  #3  
Antiguo 28-03-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Exclamation

Cita:
Empezado por Al González Ver Mensaje
Hola Felipe.

Es necesario más contexto para comprender el requerimiento. Las opciones de la 2 a la 5 se resuelven bien con la función nativa FormatDateTime.

En cuando a las opciones 0 y 1 te agradecería algunos ejemplos de valores de entrada con sus respectivos valores de salida.

Ahora, suponiendo que ya existiera la función que sugieres, ¿cómo la usarías? ¿Alguna pieza de código un poco más generosa para dar una idea? Resulta importante conocer el origen de este tipo de inquietudes.

Quedo a la espera de tu retroalimentación, saludos.
Te doy el ejemplo que utilizo diariamente. Cuando mi patrón diseñó la base de datos original sobre la que estamos trabajando, decidió que la hora debía ser expresada por un entero para determinar los minutos transcurridos desde la media noche, es decir de 0 a 1439, y en TODA la aplicación se maneja así.

Me he visto en muchos problemas para calcular horas/fechas, sumar la hora a una fecha y como éste número (la hora) es un número de punto flotante, es conveniente tenerlo presente para realizar sumar a un TDate un TTime (en formato de punto flotante) y obtener un TDateTime.

Espero haber sido claro, y si no lo fuí, avísame y te confundo más...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #4  
Antiguo 28-03-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Yo creo que, en lugar de elegir el formato con números, usar una cadena al estilo de la función date de PHP. En principio no debería ser muy difícil. Bastaría con un bucle que fuera recorriendo la cadena comprobando cada carácter. Si no puedes, la puedo hacer yo.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 28-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
De entrada olvida los tipos TDate y TTime, que son tipos especiales de la VCL equivalentes a TDateTime, pero en esencia útiles para asuntos de RTTI, como el diseño de componentes que lleven propiedades de fecha u hora. Mientras no sea éste el caso, emplea el tipo estándar TDateTime para manejar fechas, horas y combinaciones de ambas.

Cita:
Empezado por tiammat Ver Mensaje
[...] decidió que la hora debía ser expresada por un entero para determinar los minutos transcurridos desde la media noche, es decir de 0 a 1439, y en TODA la aplicación se maneja así.
Bien, a pesar de que esa decisión de tu patrón fue casi sin duda un error, cuentas con la función nativa MinuteOfTheDay para convertir cualquier hora TDateTime a un entero que indique la cantidad de minutos transcurridos desde la hora 0. ¿La usas actualmente? Y si no, ¿cómo estás haciendo la conversión TDateTime -> minutos Integer? Para hacer la conversión inversa (minutos Integer a TDateTime), lo único que necesitas es dividir ese entero entre la constante MinsPerDay. ¿Cómo lo haces actualmente?
Código Delphi [-]
Uses
  DateUtils;

procedure TForm1.Button1Click(Sender: TObject);
Var
  I1, I2 :Integer;
begin
  I1 := MinuteOfTheDay (Time);  // Hora actual
  I2 := MinuteOfTheDay (0.5);  // Mediodía (720 minutos)
  ShowMessage (IntToStr (I1));
  ShowMessage (IntToStr (I2));
  ShowMessage (TimeToStr (I1 / MinsPerDay));
  ShowMessage (TimeToStr (I2 / MinsPerDay));
end;

Cita:
Empezado por tiammat Ver Mensaje
Me he visto en muchos problemas para calcular horas/fechas, sumar la hora a una fecha [...]
¿Podrías detallar tales problemas y poner alguna muestra del código fuente de la aplicación donde se presentan esas dificultades? Si, por ejemplo, deseas sumar una cantidad de minutos Integer a una fecha TDateTime, sólo tienes que usar la función nativa IncMinute:
Código Delphi [-]
Uses
  DateUtils;

procedure TForm1.Button2Click(Sender: TObject);
Var
  FH :TDateTime;
  I :Integer;
begin
  I := 720;  // Mediodía

  // Sumamos a la fecha actual 720 minutos para obtener el mediodía de hoy
  FH := IncMinute (Date, I);
  ShowMessage (DateTimeToStr (FH));
end;

Cita:
Empezado por tiammat Ver Mensaje
Espero haber sido claro, y si no lo fuí, avísame y te confundo más...
Más confusión, por favor. Hasta que lleguemos al meollo del asunto y determinemos qué convendría agregar a GHF. Si lo anterior no satisface del todo tus necesidades para manejo de fechas y horas, permíteme entender estas a fondo, no escatimes en texto y código para explicarlas.

Gracias, seguimos por aquí.
Responder Con Cita
  #6  
Antiguo 28-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Ñuño Martínez Ver Mensaje
[...] en lugar de elegir el formato con números, usar una cadena al estilo de la función date de PHP.
Hola Ñuño, precisamente es lo que le comentaba anteriormente a Felipe:
Cita:
Empezado por Al González Ver Mensaje
Las opciones de la 2 a la 5 se resuelven bien con la función nativa FormatDateTime.
Es decir, que para dar formato a una fecha / hora, ya se tiene la función FormatDateTime de Delphi, cuya operación es muy parecida a la de esa función de PHP.
Responder Con Cita
  #7  
Antiguo 29-03-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Hola Ñuño, precisamente es lo que le comentaba anteriormente a Felipe:

Es decir, que para dar formato a una fecha / hora, ya se tiene la función FormatDateTime de Delphi, cuya operación es muy parecida a la de esa función de PHP.
No se me ocurrió que la función podría existir ya.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #8  
Antiguo 16-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Compadre Felipe, esta semana liberaré la versión de abril. ¿Qué has pensado respecto a las respuestas anteriores? ¿Persiste la necesidad que planteabas al inicio? Ayúdame a comprenderla del todo, no estaría mal anexar un miniprograma de ejemplo al requerimiento.

Saludos.
Responder Con Cita
  #9  
Antiguo 18-04-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Compadre Felipe, esta semana liberaré la versión de abril. ¿Qué has pensado respecto a las respuestas anteriores? ¿Persiste la necesidad que planteabas al inicio? Ayúdame a comprenderla del todo, no estaría mal anexar un miniprograma de ejemplo al requerimiento.

Saludos.
Pues no, después de la explicación tan puntual respecto al uso (o abuso, según sea el caso ) de cómo se maneja la fecha/hora acá en el trabajo, la necesidad desapareció...

Pero con todo gusto revisamos qué de nuevo traen las librerías, cómo de que no...
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #10  
Antiguo 18-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por tiammat Ver Mensaje
[...] la necesidad desapareció...
Enterado, Felipe. Que haya sido provechosa la explicación.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Avanzando con GH Freebrary Al González [GH Freebrary] 13 23-03-2013 08:08:03
Introducción a GH Freebrary Al González [GH Freebrary] 0 18-03-2013 11:11:54
Nueva GH Freebrary (open source) "beta" Al González [GH Freebrary] 23 17-02-2013 02:20:40
Función para fechas Alexandro Tablas planas 4 16-10-2008 22:24:37
Función para strings Jesús Pena Varios 4 26-04-2007 02:48:33


La franja horaria es GMT +2. Ahora son las 10:30:08.


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