Convertir horodatage NTP à l'utc
Quoi de la façon la plus facile de convertir un horodatage NTP à l'utc. Je sais que c'est dans NTP, je peux le convertir dans un autre format.
Grâce.
Bob.
- Avez-vous un exemple d'entrée?
- Selon ce lien souptonuts.sourceforge.net/readme_working_with_time.html les secondes depuis 01-01-1990 sont dans le highorder int de la longue ntp.
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela? Je ne suis pas sûr du format de la "secondes depuis le 1er janvier 1900', mais vous pouvez le modifier comme bon vous semble.
René a souligné l'horodatage NTP est composé d'un nombre entier et d'une fraction de la partie. La partie entière représente le nombre de secondes depuis le temps de base, qui est le 1er janvier 1900. La partie fractionnaire représente le nombre de fractions d'unités (une unité est 1/((2^32)-1)) dans la seconde.
En outre, le temps de la représentation est UTC.
Donc, si vous avez un Horodatage NTP de dire 14236589681638796952. NTP est un 64 bits non signé fixe-nombre de point. Nous pouvons dire:
La haute 32 bits sont donnés par:
Et la faible 32 bits sont sont donnés par:
Le nombre de secondes est égale à la plus significative de la parole ou, dans ce cas:
secondes == 3314714339
Le nombre de millisecondes peut être calculée à partir de la fraction à l'aide de ce calcul:
Qui est de 12 dans ce cas.
Donc la valeur de type DateTime est produit à partir de:
Donc l'Horodatage NTP de 14236589681638796952 est égale à la 14 Jan 2005 à 17:58:59 et 12 millisecondes UTC.
Cela fonctionne de manière fiable, pour moi: