Как получить не системное время и дату в python?

Я хочу получить реальное мировое время и дату (Не важно по какому часовому поясу).

Я пытался выполнить вроде этого:

import datetime
print(datetime.datetime.now())

И да, я получаю время и дату:

2021-06-30 12:14:46.893459

Но проблема в том, что если пользователь у себя изменит настройки даты и времени, то измениться и вывод который я получу, мне это не годиться. Как я могу получить то же время и дату, вне зависимости от настроек пользователя?


Ответы (2 шт):

Автор решения: Andy Pavlov

Посмотрите https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow

now() выдает Вам Ваше текущее время, тогда как utcnow() общемировое, которое потом можно в локальные зоны перевести.

import datetime
print(datetime.datetime.utcnow())  # 2021-06-30 09:36:24.605686
print(datetime.datetime.now())  # 2021-06-30 12:36:24.605686

Если же нужно время от сервера, то тут лучше смотреть в сторону запроса к NTP серверам. К примеру через библиотеку ntplib https://github.com/Tipoca/ntplib

import ntplib
import datetime

conn = ntplib.NTPClient()
response = conn.request('0.ru.pool.ntp.org', version=3)
print(datetime.datetime.fromtimestamp(response.tx_time, datetime.timezone.utc))
→ Ссылка
Автор решения: Muxe1

Держи

from WorldTimeAPI.schemas import *
from WorldTimeAPI.service import Client

payload = {"area":"EST"}

myclient = Client('timezone')

r = myclient.get(**payload)

if isinstance(r,ErrorJson):
    print(r.errMsg)
        
elif isinstance(r,DateTimeJson):
    print(r.datetime)

→ Ссылка