PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Conversion valeur lastlogon (Active Directory)
Conversion valeur lastlogon (Active Directory)
Iniciado por smi.mg, 17,feb. 2008 00:14 - 6 respuestas
Publicado el 17,febrero 2008 - 00:14
Bonsoir,
Je cherche une méthode pour transformer en date (ex: 01/02/2008), une valeur récuperée dans un champ de l'Active directory sous forme d'un entier de 64 bits.
Ce nombre correspond au nombre de nanosecondes ecoulées depuis le 01/01/1601.
Windev ayant comme réference pour les dates 01/01/1800.
Pas simple de faire une conversion.
Si quelqu'un a une solution
Cordialement
Publicado el 17,febrero 2008 - 19:16
Bon
Je me réponds cela peut servir à d'autres, valable pour les autres champs AD du même type
nlastlogon est un entier
//ex: 128064239937031250'/10/2006
//116444736000000000=01/01/1970
nlastlogon=(128064239937031250 -116444736000000000)/ 10000000
//62092 = nombre de jours entre 01/01/1801 et 01/01/1970
nlastlogon=(nlastlogon/86400)+62092
Info("Date du dernier logon "+EntierVersDate(nlastlogon))
Cdt
Publicado el 18,marzo 2008 - 00:02
Super ce code fonctionne bien. Et cela m'a permis de chercher un peut et je suis tombé par hazard sur la fonction "cdbEntierVersDateHeure"

Et voici mon ti bout de code :

//Recupere le Last Logon avec une valeur de type : 128442683628233000
nLast_Logon est un entier sur 8 octets = COL_Last_Logon

//Calcul de la date a partir du 01.01.1601, date a partir de laquelle l'AD compte les nanosecondes.
COL_Colonne1=cdbEntierVersDateHeure(nLast_Logon)

Ensuite il faut mettre la COL_Colonne1 au format date/heure, ce qui donne :
08/01/2008 13:19

Et voila

En esperant avoir aidé certain

Bon Dev
Miembro registrado
131 mensajes
Publicado el 23,septiembre 2015 - 15:56
Merci beaucoup Marcello et Gilyl, ces bouts de code m'ont été très utiles !

--
Cordialement,
Nesta
Publicado el 26,agosto 2016 - 11:05
//exemple avec WhenCreated


sMachaine = LDAPValeur("MaSession", sUtilisateur, "WhenCreated")
sMachaine = Gauche(sMachaine,Taille(sMachaine)-3)
sCreated = DateHeureUTCVersLocale(sMachaine)
sCreated = Milieu(sCreated,7,2)+"/" + Milieu(sCreated,5,2)+"/" + Gauche(sCreated,4) + " " + Milieu(sCreated,9,2)+":" + Milieu(sCreated,11,2)+":" + Milieu(sCreated,13,2)
Publicado el 11,enero 2019 - 11:36
dhDaty est une DateHeure
lastLog est entier sur 8 octets ="131915954153439830"
dhDaty=cdbEntierVersDateHeure(lastLog)
//dhDaty=DateVersChaîne(dhDaty)
Info("La date est "+DateVersChaîne(dhDaty),cdbEntierVersDateHeure(lastLog))
Publicado el 16,septiembre 2019 - 13:28
Un grand Merci :merci: