Как исправить "невозможно сравнить времена данных со смещением и с учетом смещения" в python
Здесь я использую Django и сравниваю время. Но у меня не получается это сделать. В следующем коде значение wts, которое является значением времени, приходит в виде строки. Если оно приходит в строковом типе, то сначала я конвертирую его в обычное время, после чего вычитаю из него 5 часов. и затем сравниваю, меньше ли оно текущего или нет.
if not wts:
raise ValueError('When to send(wts) require ')
if type(wts) is str:
wts_compare = parser.parse(wts)
print("wts time type ->>>" ,type(wts_compare),wts_compare)
wts = wts_compare - timedelta(hours=5)
if wts_compare <= timezone.now():
raise ValueError('when to send (wts) must be a future date-time')
else:
wts = wts-timedelta(hours=5)
if wts <= timezone.now():
raise ValueError('when to send (wts) must be a future date-time')
Вы можете использовать django build-in timezone.make_naive
и timezone.make_aware
from django.utils import timezone
In [1]: timezone.now()
Out[1]: datetime.datetime(2022, 6, 13, 17, 57, 41, 613329, tzinfo=<UTC>)
In [2]: timezone.make_naive(timezone.now()) # i am in UTC+2
Out[2]: datetime.datetime(2022, 6, 13, 19, 57, 34, 94246)
теперь можно сравнивать все наивные даты, которые вы хотите (используйте timezone.is_naive
для избежания ошибок)
docs : https://docs.djangoproject.com/fr/4.0/ref/utils/#django.utils.timezone.is_naive