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 18-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Convertir fecha con formato sql a algo legible

Buenos días a tod@s,

hacía mucho que no pasaba por el foro. He tenido que dejar de lado el programa que empece con tanta ilusión ya que me resulta imposible sacar tiempo para ello, a ver si en verano puedo reanudar el asunto.

Me surge una duda:

Trasteo con un foro PHPBB cuyas tablas estan en mysql, y dentro de alguna de ellas hay un campo fecha que está representado en segundos contados desde el 1 de enero de 1980.

Quiero hacer una utilidad sencilla que me convierta ese número en un formato de fecha legible, tipo dd/mm/aaaa hh:mm

Alguien me sabria decir como puedo hacer esta conversión ??

Lo que pretendo es algo muy básico, una casilla edit para insertar el número y una salida tipo label que me de la fecha convertida.

Gracias por vuestra ayuda,

un abrazo
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #2  
Antiguo 18-04-2007
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
La función que tienes que usar es:

edit.text := DateToStr(UnixToDateTime(tabla.FieldByName('Fecha').value));

Para hacer el proceso contrario, es decir guardar en una tabla la fecha en formato Unix el proceso seria:

tabla.FieldbyName('Fecha').AsInteger := DateTimeToUnix(StrToDate(edit.Text));


Para obtener la fecha correcta desde sql seria:

select from_UnixTime(fecha,"%d/%m/%Y") as fec ...
Responder Con Cita
  #3  
Antiguo 18-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Veo que el foro sigue con la misma eficacia que antes gracias Besto.

Lo de las funciones no acabo de entenderlo pese a mi cabezonería.

El dato que necesito convertir, para simplificarlo, no hace falta sacarlo de la tabla, me basta con escribirlo en un edit a mano. Solo necesito adaptar lo que me dices para que me diga la fecha normal pero no doy con ello.

Os pongo el simple codigo que tengo hasta ahora (es realmente simple como veis):

Código:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

implementation
{$R *.dfm}
procedure TForm1.Edit1Change(Sender: TObject);
begin
  label4.Caption := 'Aqui la fecha con el formato legible';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  application.Terminate;
end;
end.
Dentro de label4 es donde necesito poner la fecha convertida que introduzco en edit1 (he optado por que ese calculo se haga en cuanto cambie el contenido de edit1 aunque no me importa poner un botón si es mas cómodo)
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #4  
Antiguo 18-04-2007
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
Si no he entendido mal la fecha en formato numérico la tienes en edit1 y quieres que en label4 aparezca en formato fecha. La funcion que tienes que aplicar sería:

label4.caption := DateToStr(UnixToDateTime(edit1.text));
Responder Con Cita
  #5  
Antiguo 18-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Gracias de nuevo Besto,

eso es lo que quiero hacer, si.

Lo que me indicas es la solución pero me da un error indicando (mas o menos lo entiendo así) que UnixToDateTime no está declarada.

Por eso me referia al tema de las funciones, por si hay que hacer algo mas.

(lo siento, supongo que es una pregunta un poco tonta pero no se que hay que hacer)
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #6  
Antiguo 18-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Lo he medio solucionado dandole vueltas con otra función que he visto buscando en el foro. Os lo pongo por si le sirve a alguien:

Código:
procedure TForm1.Edit1Change(Sender: TObject);
var
dias : double;
begin
  dias := strtofloat(edit1.text)/86400;
  label4.caption := datetostr(EncodeDate(1970,1,1)+dias);
end;
No lo tengo al 100% como yo quería ya que ademas de la fecha quiero que me ponga hh:mm , sigo buscando ...
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #7  
Antiguo 18-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Bien, pues probando y probando... ya lo tengo

Asi queda el tema, ademas veo que los segundos se inician el 1/1/1970 y no en el 80 como yo pensaba.

Código:
procedure TForm1.Edit1Change(Sender: TObject);
var
dias : double;
begin
  if edit1.Text <> '' then begin
    dias := strtofloat(edit1.text)/86400 + encodedate(1970,1,1);
    label4.caption := datetimetostr(dias);
  end;
end;
Gracias de todos modos por vuestra colaboración, seguiré molestando de vez en cuando
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #8  
Antiguo 19-04-2007
Besto Besto is offline
Miembro
 
Registrado: abr 2006
Posts: 118
Poder: 19
Besto Va por buen camino
Aunque ya has encontrado otra solución te indico que para que funcione la función hay que añadir a la clausula lo siguiente:

uses ..., DateUtils

no entendia bien a lo que te referias con el tema de las funciones, perdona.
Responder Con Cita
  #9  
Antiguo 19-04-2007
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
A eso me refería, exacto.

Muchas gracias de todos modos, tomo buena nota para otra vez.

Un abrazo
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #10  
Antiguo 29-05-2007
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
Intercambio de ideas.....

Saludos, tambien hace un tiempo he desarrollado un sistema de facturacion, quisiera ver la forma de contactarnos para intercambiar ideas y ver en que podemos colaborar.

Saludos y suerte.
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
convertir una fecha electrica Oracle 3 07-12-2005 19:40:41
convertir a pdf un archivo con cualquier formato JuanErasmo C++ Builder 0 17-08-2005 23:44:26
Como cambiar el formato de un QRSysData en formato fecha Bitbanner Tablas planas 1 13-02-2005 12:33:26
Como Obviar el formato de Fecha del Servidor para Salvar sólo en formato "dd/mm/yyyy" R_Richards Varios 4 07-02-2005 15:57:19
convertir a formato de Hora ebeltete SQL 1 05-06-2003 09:26:59


La franja horaria es GMT +2. Ahora son las 10:11:16.


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