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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    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 938
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    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 averti
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    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 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    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

  5. #5
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    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

  6. #6
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    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.

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 938
    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.

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    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.

  9. #9
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 776
    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 776
    Par défaut
    @Jipété Ne te casse pas la nénette, lis le wiki Epoch (reference date)

  10. #10
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 19
    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