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 |
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 ... |
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; |
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)); |
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) |
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); |
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); |
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. |
A eso me refería, exacto.
Muchas gracias de todos modos, tomo buena nota para otra vez. Un abrazo |
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. |
La franja horaria es GMT +2. Ahora son las 09:04:17. |
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