Fonction delphi

Résolu
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 - 18 oct. 2007 à 23:19
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 - 20 oct. 2007 à 15:00
Bonjour! :P

J'ai chercher sur google et ici pour une function Delphi mais je n'arrive pas a la trouver.. Y a-t-il une function qui permet de retourner " l'asctime " ?
Par exemple, j'aimerais que '1192671766' retourne la date Wed Oct 17 21:42:46 2007 (peut importe le format)

Merci! :P

21 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2007 à 14:54
J'ai une course à faire, là, mais voilà pour patienter (le code est fonctionnel et quasiment définitif) :

function Asctime(Value: Integer; const Adjust: Boolean = False): string;
var
  D, H, M, S: LongWord;

  function GMTLag: Integer;
  const
    KName = 'SYSTEM\CurrentControlSet\Control\TimeZoneInformation';
  begin
    with TRegistry.Create do
    try
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKey(KName, False) then
      try
        Result := - ReadInteger('ActiveTimeBias');
      finally
        CloseKey;
      end;
    finally
      Free;
    end;
  end;
 
begin
  if Adjust then
    Inc(Value, GMTLag * 60);
  M := Value div 60;
  S := Value mod 60;
  H := M div 60;
  M := M mod 60;
  D := H div 24;
  H := H mod 24;
  Result := DateTimeToStr(25569 + D + EncodeTime(H, M, S, 0));
end;

Si tu passes True en paramètre Lag, le décalage horaire est calculé d'après la valeur stockée dans la base de registres.

A plus.
3
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
19 oct. 2007 à 00:35
Salut,

Tu n'as pas dû chercher plus de quelques secondes, il me semble :P

C'EST ICI ! 
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
19 oct. 2007 à 01:00
??
c'est pour linux
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
19 oct. 2007 à 01:12
Si tu regarde bien le site que tu m'as donné, il est pour la programmation linux :P
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
19 oct. 2007 à 17:41
Salut,

Forcément, asctime c'est propre à Linux

En Delphi sous Windows, tu as la fonction :
FileAge()
qui te retourne un entier.
Tu peux convertir cet entier en TDateTime avec :
FileDateToDateTime()
Enfin, avoir l'âge du fichier sous forme de string genre '17/10/07 21:42:46' :
DateTimeToStr()

Bonne prog'
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
19 oct. 2007 à 18:22
Merci beaucoup! C'est déjà un bon départ dans la resolution de mon probleme Mais..!

J'ai essayer:

showmessage(DateTimeToStr(FileDateToDateTime(1192671766)))

et ça me donne:

2015-08-22 23:16:44

La date qu'il est suposer donner est 2007-10-17 21:42:46

Une petite idée du problème ?
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
19 oct. 2007 à 18:36
"Une petite idée du problème ?"

Oui.

1192671766correspond à la date du 22/08/2015 23:16:44
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
19 oct. 2007 à 18:43
Dans l'autre sens :

IntToStr(DateTimeToFileDate(StrToDateTime('17/10/07 21:42:46'))) retourne la valeur 928099671

IntToStr(DateTimeToFileDate(StrToDateTime('22/08/2015 23:16:44'))) retourne 1192671766

Je crois que là tu as tout ce qu'il faut pour te faire une idée.

Bonne prog'

japee
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
19 oct. 2007 à 22:02
Hum, je suis entrain de faire un client IRC et le server m'envoi comme information que le Topic du canal à été modifier le 1192671766...
Avec mIRC, si on utilise $asctime(1192671766), cela nous donne Wed Oct 17 21:42:46 2007
J'ai tester avec certains programmmes et c'est le meme resultat
Selon la RFC, le temps donné doit etre converti par asctime...
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2007 à 00:44
Avec un peu de chance, cette solution simple pourrait fonctionner :

function AscTime(Value: Integer): string;
begin
  Result := DateTimeToStr(FileDateToDateTime(Value - 264572095));
end;

A tester...

Sinon, va falloir se creuser un peu plus les méninges.
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
20 oct. 2007 à 01:06
Non ce n'est pas ça .. bien essayé par contre
J'ai trouver a un endroit que AscTime est, en fait, le contraire de ctime

Si par exemple on fait ctime(Fri Oct 19 18:59:38 2007) .. cela donne 1192834778
et si on fait asctime(1192834778) .. cela donne Fri Oct 19 18:59:38 2007

Mais bon! Cela ne m'avance pas vraiment
A mon avis il doit y avoir un calcul a faire avec l'heure local..
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
20 oct. 2007 à 02:29
T'as pas bien regardé mon lien, iosth34d2.

«  ... en Temps Universel (TU).  »
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
20 oct. 2007 à 03:04
Caribensila, dsl, mais ça ne me donne pas plus une idée de comment procédé.. :P
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2007 à 10:43
Moi, ce que j'ai compris de la fonction asctime utilisée par d'autres langages, c'est qu'elle prend en paramètre une structure ou un pointeur sur cette structure.
Donc si tu ne disposes pas d'une de ces données, comment coder une fonction qui décoderait chaque élément de la structure ?
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2007 à 11:44
Bon, je crois que j'ai compris.

Je pense qu'il faut travailler sur une valeur de type Integer correspondant au nombre de secondes écoulées depuis le 1er Janvier 1970 à 00h 00m 00s.

J'ai fait quelques essais, mais je n'arrive pas exactement au résultat :
pour 1192671766 j'obtiens la date du 18/10/2007 01:42:46

On n'est pas loin quand même, hein ?
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
20 oct. 2007 à 12:16
Il me faudrait d'autres valeurs pour tester, mais il semble que j'obtiens 4 heures de plus.

1192834778 : 19/10/2007 22:59:38 (au lieu de 19/10/2007 18:59:38)
1192671766 : 18/10/2007 01:42:46 (au lieu de 17/10/2007 21:42:46)

Sans doute un décalage entre heure GMT et heure locale, un truc comme ça.

Heu... visiblement d'après ta fiche tu postes du Québec : c'est donc plausible !
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
20 oct. 2007 à 13:52
Mon dieu japee.. t'es en feu lol

Oui je viens du québec, donc pour le code que tu as reussi a faire, il ne manquerais plus qu'a soustraire le "GMT" a la date/heure ?

Voila d'autres valeurs pour test tests..

18000 = Wed Jan 1 00:00:00 1970
942512400 = Nov 13 12:00:00 1999
1008859831 = Dec 20 9:50:31 2001
1138806116 = Feb 1 10:01:56 2006
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
20 oct. 2007 à 14:26
L'heure, pour le Québec (Est) = TU - 4




C'est d'ailleurs rigolo de remarquer que

ce système des fuseaux horaires a été inventé par un Québécois, Sir Sandford Fleming en 1876.   
0
l0sth34d2 Messages postés 76 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 13 novembre 2008 1
20 oct. 2007 à 14:36
GMT-5
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
20 oct. 2007 à 14:48
Vu dans Wikipedia:




UTC-5 (EST ou ET)
EST, Eastern Standard Time (heure standard de l'Est de l'amérique du nord)
HNE, Heure normale de l'Est (au Canada)
Canada* :
   Québec* (ouest)
   Ontario* (est)




UTC-4 (AST)
AST, Atlantic Standard Time (heure standard de l'Atlantique)
HNA, Heure normale de l'Atlantique (au Canada)
Canada :
   Labrador* (sauf la pointe sud-est)
   Nouveau-Brunswick*
   Nouvelle-Écosse*
   Île du Prince-Édouard*
   Québec* (est)

Mais t'es mieux placé que nous pour le savoir,  l0sth34d2     
0
Rejoignez-nous