Je travaille avec AD via LDAP (en utilisant Spring LDAP) et j'ai rencontré un problème étrange en travaillant avec Integer8/LargeInteger comme timestamps outlined here. A savoir, mes tentatives d'écriture des champs de ce type ont donné lieu à ...Travailler avec Integer8/LargeInteger de MS en Java?
« nom du champ » ici malformée valeur d'attribut
J'ai essayé de mettre des chaînes et désire ardemment dans l'espoir que le sous-jacent l'implémentation ferait les conversions nécessaires mais pas de chance. Voici comment je fais mes maths ...
/* AD Keeps track of time in 100 NS intervals (UTC) since Jan 1st 1601 */
long winEpocMS = new GregorianCalendar(1601, Calendar.JANUARY, 1).getTimeInMillis();
long nowMS = System.currentTimeMillis();
long winTime100NS = (nowMS - winEpocMS) * 10000;
Existe-t-il un moyen facile/élégant d'emballer ces données correctement? Existe-t-il des librairies Java pré-construites pour gérer la lecture/écriture de ces valeurs de temps plutôt bizarres? Le point bonus permet à quiconque d'expliquer pourquoi nous avons besoin d'un horodatage 64 bits à la résolution 100NS.
dans ma morue, e winEpocMS est une constante, je l'ai juste écrit comme ça pour faciliter la lecture. Votre commentaire sur les horodatages 64 bits laisse un peu à désirer; pourquoi 100 ns au lieu de ms qui est beaucoup plus standard? Enfin, vous ne répondez pas au noyau de ma question, pourquoi AD n'accepte-t-elle pas la valeur longue? –
Un intervalle de 100 nanosecondes pour mesurer le temps est une décision de conception. Dans le monde MS semble être habituel, comme dans .NET 'DateTime.Ticks' mesure le temps dans des intervalles de 100 nanosecondes.Millisecondes est le choix de Java, et toute décision comme celle-ci a des avantages et des inconvénients ('DateTime' est une structure en C# et donc pas nulle, alors que Java est une classe et peut être nulle, cela a des avantages et des inconvénients. Pourquoi n'accepte pas la valeur longue est inconnu pour moi. –