Fonction delphi [Résolu]

l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 18 oct. 2007 à 23:19 - Dernière réponse : l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 20 oct. 2007 à 14:54
3
Merci
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.

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

Commenter la réponse de japee
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 19 oct. 2007 à 00:35
0
Merci
Salut,

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

C'EST ICI ! 
Commenter la réponse de Caribensila
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 19 oct. 2007 à 01:00
0
Merci
??
c'est pour linux
Commenter la réponse de l0sth34d2
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 19 oct. 2007 à 01:12
0
Merci
Si tu regarde bien le site que tu m'as donné, il est pour la programmation linux :P
Commenter la réponse de l0sth34d2
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 19 oct. 2007 à 17:41
0
Merci
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'
Commenter la réponse de japee
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 19 oct. 2007 à 18:22
0
Merci
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 ?
Commenter la réponse de l0sth34d2
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 19 oct. 2007 à 18:36
0
Merci
"Une petite idée du problème ?"

Oui.

1192671766correspond à la date du 22/08/2015 23:16:44
Commenter la réponse de japee
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 19 oct. 2007 à 18:43
0
Merci
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
Commenter la réponse de japee
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 19 oct. 2007 à 22:02
0
Merci
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...
Commenter la réponse de l0sth34d2
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 20 oct. 2007 à 00:44
0
Merci
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.
Commenter la réponse de japee
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 20 oct. 2007 à 01:06
0
Merci
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..
Commenter la réponse de l0sth34d2
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 20 oct. 2007 à 02:29
0
Merci
T'as pas bien regardé mon lien, iosth34d2.

«  ... en Temps Universel (TU).  »
Commenter la réponse de Caribensila
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 20 oct. 2007 à 03:04
0
Merci
Caribensila, dsl, mais ça ne me donne pas plus une idée de comment procédé.. :P
Commenter la réponse de l0sth34d2
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 20 oct. 2007 à 10:43
0
Merci
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 ?
Commenter la réponse de japee
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 20 oct. 2007 à 11:44
0
Merci
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 ?
Commenter la réponse de japee
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 20 oct. 2007 à 12:16
0
Merci
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 !
Commenter la réponse de japee
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 20 oct. 2007 à 13:52
0
Merci
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
Commenter la réponse de l0sth34d2
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 20 oct. 2007 à 14:26
0
Merci
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.   
Commenter la réponse de Caribensila
l0sth34d2 76 Messages postés mercredi 21 mars 2007Date d'inscription 13 novembre 2008 Dernière intervention - 20 oct. 2007 à 14:36
0
Merci
GMT-5
Commenter la réponse de l0sth34d2
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 20 oct. 2007 à 14:48
0
Merci
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     
Commenter la réponse de Caribensila

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.