2017-08-23 2 views
0

En python, en important module datetime et en utilisant diverses fonctions de class datetime.datetime nous pourrions obtenir des dates de base avec la mise en forme et même l'arithmétique de date pour le déploiement. Par exemple, datetime.datetime.now() renverra la date du jour.Comment datetime.datetime.now() fonctionne sans connexion Internet?

enter image description here

Mais, aujourd'hui, quand je lance ce programme il n'y avait pas de connexion internet dans mon ordinateur, mais encore il sort la date d'aujourd'hui.

Alors, comment datetime.datetime.now() pourrait renvoyer la bonne date? L'algorithme est-il automatiquement incrémenté après 24 heures?

+0

Pourquoi le code demanderaient une autre machine pour la date et l'heure de votre ordinateur, il sait? –

+0

Eh bien, l'ordinateur sait comment sans connexion Internet? –

+3

Parce qu'il a une horloge à l'intérieur? –

Répondre

5

tl; dr datetime.datetime.now() utilise l'horloge intégrée à votre ordinateur.

Les ordinateurs ont été en mesure de conserver une heure assez précise pendant beaucoup plus longtemps que l'Internet a existé.

Par exemple, les PC comportent ce qu'on appelle un real-time clock (RTC). Il est alimenté par batterie et peut conserver l'heure même lorsque l'ordinateur est éteint.

Fait intéressant, certains algorithmes distribués require very accurate clocks afin de fonctionner de manière fiable. La précision requise dépasse de loin tout ce qu'une simple horloge à oscillateur peut fournir.

En conséquence, les entreprises comme Google fonctionnent GPS et atomic horloges dans leurs centres de données (et même ceux qui ne sont pas sans problèmes potentiels, comme cela a été démontré, par exemple, on 26 January 2017, lorsque certaines horloges GPS ont été par 13 microsecondes pour dix heures).

Même si les centres de données sont connectés à Internet, ni le GPS ni les horloges atomiques ne nécessitent une connexion Internet pour fonctionner. En outre, someone doit garder toute cette infrastructure de temps Internet en cours d'exécution ... il ne peut pas être que tout le monde obtient leur temps "hors Internet". ;)

Maintenant que nous sommes sur le sujet de la répartition de l'heure à travers les réseaux informatiques, les principaux protocoles pour le faire sont NTP (Network Time Protocol) and PTP (Precision Time Protocol).

+0

Il convient également de mentionner le service NTP qui permet de synchroniser l'horloge locale avec un serveur de temps distant. – SirWojtek

1

La documentation pour datetime.datetime.now() n'indique pas l'heure est reçue de l'Internet.

Renvoie la date et l'heure locales actuelles. Si l'argument optionnel tz est Aucun ou non spécifié, c'est comme aujourd'hui(), mais, si possible, fournit plus de précision que ce qui peut être obtenu en passant par un horodatage time.time() (par exemple, cela est possible sur les plates-formes fournissant la fonction C gettimeofday()).

Si tz n'est pas None, il doit s'agir d'une instance d'une sous-classe tzinfo, et la date et l'heure actuelles sont converties dans le fuseau horaire de tz. Dans ce cas, le résultat est équivalent à tz.fromutc (datetime.utcnow(). Replace (tzinfo = tz)). Voir aussi aujourd'hui(), utcnow().

Le datetime est reçu à partir du moment de l'ordinateur, si vous utilisez Windows par exemple, essayez de changer le temps de la fenêtre et le python imprimera le temps que vous avez changé.

vérifier sa documentation: https://docs.python.org/2/library/datetime.html

+1

Ce n'est pas ce que signifie "heure locale". Cela signifie "dans le fuseau horaire de l'ordinateur", pas "sans consultation de sources externes". http://www.dictionary.com/browse/local-time – NPE

+0

Merci pour vos commentaires. –