Я написал настольное приложение и использовал datetime.datetime.utcnow()
для timestamping, однако недавно я заметил, что некоторые люди, использующие приложение, получают разные результаты, чем при запуске программы одновременно. Есть ли способ получить время UTC локально, не используя urllib, чтобы получить его с веб-сайта?
Как я могу получить точное время UTC с Python?
Ответ 1
Python зависит от базовой операционной системы, чтобы обеспечить точное время суток. Если это не так, у вас нет другого выбора, кроме как обойти o/s. Там реализована чистая реализация Python клиента NTP здесь. Очень простой подход:
>>> import ntplib,datetime
>>> x = ntplib.NTPClient()
>>> datetime.datetime.utcfromtimestamp(x.request('europe.pool.ntp.org').tx_time)
datetime.datetime(2009, 10, 21, 7, 1, 54, 716657)
Тем не менее, было бы не очень приятно постоянно нажимать на другие серверы NTP. Хороший чистый гражданин будет использовать библиотеку клиента ntp для отслеживания смещения между системными часами o/s и полученным с сервера и только периодически опроса, чтобы настроить время.
Ответ 2
Собственно, ntplib вычисляет этот счетный учет за задержку в оба конца. Он доступен через атрибут "offset" ответа NTP. Поэтому результат должен быть не очень диким.