Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Fecha y Hora (https://www.clubdelphi.com/foros/showthread.php?t=20324)

anitra_cattivo 12-04-2005 19:19:46

Fecha y Hora
 
Una consulta.

Tengo un archivo de texto de la siguiente forma:

4224C692
4224C697
4224C69C
4224C69D
4224C6A8
4224C6F6
4224C9FE
4224CA7C
4224CA7E
4224D047
4224D049

Esto son numero en base 16, que representan la fecha y
hora. El problema es que esta de la sigueinte forma:

Numero de Segundos Transcurridos desde las 00:00 del
1-1-1970

Es decir debo sumar a las 00:00 del 1-1-1970 ese
numero?

Como puedo hacer esto en Delphi?. Como hago o
considero los años bisiestos
Me es necesario traducir estas lineas, pues alli estan
las marcaciones de los trabajadores (a que hora y
minuto marco de que año, mes y dia = AAMMDDHHMM)

Muchas Gracias.

delphi.com.ar 12-04-2005 20:03:51

Yo te recomiendo tratarlas como TDate, hacerte dos funciones convertir esos strings a TDate y viseversa, y luego hacer todos los cálculos utilizando las funciones que trae delphi para el trato de fechas.

Saludos!

marcoszorrilla 12-04-2005 20:09:40

Habrá que saber primero, si todo es un número o está divido en partes, si todo es un número tendrás que pasarlo a decimal y luego a partir de ahí obtener la fecha y hora.

Un Saludo.

anitra_cattivo 12-04-2005 20:58:27

Fecha y Hora
 
Me dicen que todo es un numero que representa la cantidad de Segundos transcurridos desde las 00:00 del 1-1-1970

Ejemplo:
4224F694 es a base 10 = 1109718676

Esto significa de que transcurrieron 1,109'718,676 segundos desde las 00:00 del 1-1-1970

Entonces en ese unico gran numero esta la Fecha y la Hora :(

Como puedo hacer?

jachguate 12-04-2005 22:33:18

Dado que el TDateTime de delphi almacena también como un número la fecha transcurrida desde el 30/12/1899, podemos aprovecharnos de esto para hacer algo como:

Código Delphi [-]
Function RareDateToTDateTime(aRareDate : String) : TDateTime;

Const
  DiasIncrementar = 25569;
  SegundosEnUnDia = 3600*24;

Var
  DateNum : Integer;

Begin
  DateNum := StrToInt('$' + aRareDate);
  Result := DateNum / SegundosEnUnDia + DiasIncrementar;
end;

Con esta sencilla función he podido comprobar que:

Código:

4224C692 => 01/03/2005 07:46:26 p.m.
4224C697 => 01/03/2005 07:46:31 p.m.
4224C69C => 01/03/2005 07:46:36 p.m.
4224C69D => 01/03/2005 07:46:37 p.m.
4224C6A8 => 01/03/2005 07:46:48 p.m.
4224C6F6 => 01/03/2005 07:48:06 p.m.
4224C9FE => 01/03/2005 08:01:02 p.m.
4224CA7C => 01/03/2005 08:03:08 p.m.
4224CA7E => 01/03/2005 08:03:10 p.m.
4224D047 => 01/03/2005 08:27:51 p.m.
4224D049 => 01/03/2005 08:27:53 p.m.

Hasta luego.

;)

anitra_cattivo 13-04-2005 20:12:37

Gracias.
 
Maravilloso.

Muchas Gracias amigo, ya se pudo modificar estos registros al formato actual.

Gracias de nuevo

Atentamente,


La franja horaria es GMT +2. Ahora son las 23:46:59.

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