Fonction delphi [Résolu]

Signaler
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
-
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
-
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
A voir également:

21 réponses

Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
Salut,

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

C'EST ICI ! 
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
??
c'est pour linux
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
Si tu regarde bien le site que tu m'as donné, il est pour la programmation linux :P
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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'
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
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 ?
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
"Une petite idée du problème ?"

Oui.

1192671766correspond à la date du 22/08/2015 23:16:44
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
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...
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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.
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
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..
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
T'as pas bien regardé mon lien, iosth34d2.

«  ... en Temps Universel (TU).  »
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
Caribensila, dsl, mais ça ne me donne pas plus une idée de comment procédé.. :P
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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 ?
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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 ?
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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 !
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
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
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
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.   
Messages postés
76
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
13 novembre 2008
1
GMT-5
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
13
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