Comment obtenir la date et l'heure actuelles de GPS unsegment temps en python
J'ai le gps non segmenté temps comme ceci:
Tgps = 1092121243.0
Et j'aimerais comprendre ce que la date et l'heure, c'est que. Le début de l'heure GPS est le 6 janvier 1980. Fonction Python
datetime.utcfromtimestamp
pourrait donner secondes depuis le 1er janvier 1970 année.
J'ai trouvé suivantes:
from datetime import datetime
GPSfromUTC = (datetime(1980,1,6) - datetime(1970,1,1)).total_seconds()
curDate = datetime.utcfromtimestamp(Tgps + GPSfromUTC)
Out[83]: datetime.datetime(2014, 8, 15, 7, 0, 43)
Je ne suis pas sûr leapseconds sont-ils inclus dans la fonction datetime ou je doit les calculer et de les soustraire du résultat?
Peut-être existe également une meilleure solution à ce problème?
OriginalL'auteur Anton Protopopov | 2015-10-29
Vous devez vous connecter pour publier un commentaire.
GPS temps, a commencé en synchronisation avec l'heure UTC:
1980-01-06 (UTC) == 1980-01-06 (GPS)
. Les deux tick SI secondes. La différence entre le GPS en temps et en heure UTC augmente avec chaque (intercalaire) saut de seconde.Pour trouver la bonne heure UTC, vous avez besoin de connaître le nombre de secondes intercalaires eu lieu avant le temps GPS:
De sortie
où
leap_count(date)
est le nombre de secondes intercalaires introduite avant la date donnée. De TAI-UTC table (note: le site est la source officielle sur les secondes intercalaires. Il publie Bulletin de la C annonçant un nouveau bond en secondes):et donc:
Si vous êtes sous Unix, vous pouvez utiliser
"right"
fuseau horaire pour obtenir l'heure UTC de TAI temps(et il est facile d'obtenir le TAI-temps à partir de l'heure GPS: TAI = GPS + 19 secondes (décalage constant)):
De sortie
Vous pourriez éviter la modification du fuseau horaire si vous extrayez les secondes intercalaires liste de correspondants
tzfile(5)
. C'est une combinaison des deux premières méthodes où le saut comte de calcul à partir de la première méthode est automatisé et le autoupdatingtzdata
(système de package pour la base de données tz) à partir de la seconde méthode est utilisée:où
leapseconds.py
peut extraire des secondes intercalaires de/usr/share/zoneinfo/right/UTC
fichier (une partie detzdata
package).Toutes les trois méthodes produisent le même résultat.
OriginalL'auteur jfs
J'utilise la fonction suivante qui compte les secondes intercalaires:
Bien sûr, vous devez mettre à jour
_LEAP_DATES
temps en temps, mais ces mises à jour sont assez rares.En général, le temps GPS est constitué de deux nombres: GPS semaine et le nombre de secondes depuis le début de la semaine du GPS. Par conséquent, vous pouvez utiliser les éléments suivants:
Dans votre cas
week = 0
, donc:"right/UTC"
, tzfile de solutions à base d' qui s'appuient sur les mises à jour automatiquementtzdata
système de package.OriginalL'auteur Yury Kirienko
Vous pouvez utiliser le astropy.le temps paquet pour ce faire:
qui retourne:
2017-03-01 00:00:37.000
Je pense qu'il y a quelques petites définitions 1 seconde niveau entre le temps UNIX rapporté par astropy et la stricte POSIX définition, mais c'est proche.
OriginalL'auteur Ru887321