bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Convertire un oggetto Date in un timestamp Active Directory

Siglo questo mio 50mo post con una cosa un pò frivola che però mi ha portato via un pò

di tempo.

Stavo lavorando programmaticamente con LDAP (in particolare con le Apache Directory LDAP API,http://directory.apache.org/api/) ed avevo la necessità di valorizzare su Active Directory un attributo di tipo timestamp a partire da un classico oggetto java.util.Date; dopo diverse (ed inutili) prove con il metodo getTime() ho fatto un pò di ricerche ed ho scoperto che su Active Directory le date non sono espresse come UNIX timestamp (ossia i millisecondi a partire dal primo gennaio 1970) ma bensì in nanosecondi a partire dal primo gennaio 1601.

Sì, è tutto vero...

Siccome volevo evitare di scaricarmi giga di JAR per avere una classe di conversione già fatta ho cercato di capire come fare la conversione e tutto sommato è anche veloce da implementare:

Date date = ...

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();

calendar.setTime(date);
long t1 = calendar.getTimeInMillis();

calendar.set(1601, 0, 1, 0, 0, 0);
long t2 = calendar.getTimeInMillis();

long activeDirectoryTimestamp = (t1 - t2) * 10000;
Precedente
Commenti
Aggiungi Commento
Jader Jed Francia
Complimenti per il tuo 50esimo post.. ;)
Inviato il 09/07/15 14.02.