FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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) |
#2
|
|||
|
|||
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 ... |
#3
|
|||
|
|||
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.
__________________
Mi proyecto paso a paso (Parte I) |
#4
|
|||
|
|||
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)); |
#5
|
|||
|
|||
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) |
#6
|
|||
|
|||
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;
__________________
Mi proyecto paso a paso (Parte I) |
#7
|
|||
|
|||
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;
__________________
Mi proyecto paso a paso (Parte I) |
#8
|
|||
|
|||
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. |
#10
|
|||
|
|||
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. |
|
|
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 |
|