Как исправить "невозможно сравнить времена данных со смещением и с учетом смещения" в 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

Вернуться на верх