IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Convertir une date représentée par 18 chiffres (Active Directory Timestamp)


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Convertir une date représentée par 18 chiffres (Active Directory Timestamp)
    Bonjour,
    Je n'ai pas réussi malgré plusieurs heures de recherches sur les forums à trouver comment convertir en date un chiffre exprimé en nanosecondes.

    Sur DELPHI, j'ai récupéré par LDAP la valeur de l'attribut lastLogon. Seulement cette valeur ressort sous la forme de 18 chiffres (ex: 130732521375836501).

    Je souhaiterais pouvoir convertir cette valeur en date. Ce chiffre exprimé en nanosecondes représente la différence de temps écoulée depuis le 01/01/1601. (d'après ce que j'ai trouvé sur les forums).

    Si quelqu'un peut me venir en aide, ce sera le bienvenue!!!!

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Par pas de 100 nanosecondes d'après ce que je lis

    Divise ce nombre par 10000 (pour l'avoir en milliseconde) et incrémente la date minimale à l'aide de IncMilliSecond (DateUtils) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var
      D :TDateTime;
    begin
      D := IncMilliSecond(EncodeDate(1601, 1, 1), 130732521375836501 div 10000);
    end;

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci pour ton retour Andnotor!!
    J'ai essayé ton code, mais j'obtiens 30/12/1899 comme date. Comme ça me paraissait bizarre, j'ai vu que même en divisant par 10 au lieu de 1000 j'obtiens la même date...

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Pour info, la commande suivante

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    w32tm.exe /ntte 130732521375836501

    donne ce résultat :

    151310 18:55:37.5836501 - 11/04/2015 20:55:37
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    J'avais testé cette fonction avant de la proposer et j'obtiens bien le 11.04.2015 18:55.37 GMT (à une seconde prêt) pour 130732521375836501, comme sur ce site.

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Chez moi le code d'Andnotor donne le bon résultat.

    11/04/2015 18:55:37
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Au fait, ce serait bien de rajouter cette solution dans la FAQ. Pourrait-on en savoir un peu plus sur cette façon de noter une date ? Où cette notation est-elle utilisée ? C'est ce que je n'ai pas trop compris pour ma part.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    C'est le format des Windows File Times.

    Il y a pas mal de fonctions de conversion, et le problème est de toujours être sûr de ce qu'on obtient (UTC, local) quitte à convertir l'UTC en local, en récupérant les infos sur la zone de temps.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Citation Envoyé par sylviobarca Voir le message
    Merci pour ton retour Andnotor!!
    J'ai essayé ton code, mais j'obtiens 30/12/1899 comme date.
    Mais c'est connu comme date, ça !
    Lecture1, la citation tout en bas (au passage, j'adore la date des posts de ce forum ), lecture2.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    @Jipété Ne te casse pas la nénette, lis le wiki Epoch (reference date)

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci à vous tous pour votre aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Active Directory] Convertir accountExpires dans un format lisible
    Par zakarota dans le forum Général Java
    Réponses: 4
    Dernier message: 15/06/2011, 14h12
  2. [C#] Active directory LDAP
    Par Gauden dans le forum Windows Forms
    Réponses: 9
    Dernier message: 02/05/2005, 13h57
  3. Réponses: 4
    Dernier message: 17/05/2004, 09h57
  4. Active directory
    Par m.schar dans le forum Développement
    Réponses: 5
    Dernier message: 22/03/2004, 10h30
  5. Convertir un datetime to mm.yyyy ?
    Par Nadaa dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/09/2003, 15h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo