Сделайте строку с датой UTC + 1 - PullRequest
0 голосов
/ 26 марта 2020
from datetime import datetime
from django.utils.timezone import make_aware

str_date = "02-05-2020 15:59" # UTC+1
dt = make_aware(datetime.strptime(str_date, '%d-%m-%Y %H:%M'))
print(dt)

Используя приведенный выше код, который печатает 2020-05-02 15: 59: 00 + 00: 00. Не следует ли вычесть 1 час и напечатать 2020-05-02 14: 59: 00 + 00: 00?

TIME_ZONE = 'UT C' и USE_TZ = True в settings.py.

Это вычитает 1 час из даты моего компьютера с Ubuntu

from django.utils import timezone

now = timezone.now()
print(now)

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете установить атрибут tzinfo, используя datetime.replace

    from datetime import datetime, timezone, timedelta

    offset = {'hours':1}
    str_date = "02-05-2020 15:59" # UTC+1

    unaware_dt = datetime.strptime(str_date, '%d-%m-%Y %H:%M')  
    # datetime.datetime(2020, 5, 2, 15, 59)

    aware_dt = unaware_dt.replace(tzinfo=timezone(timedelta(**offset)))  
    # datetime.datetime(2020, 5, 2, 15, 59, tzinfo=datetime.timezone(datetime.timedelta(0, 3600)))

Для проверки смотрите его смещение относительно того же времени, но в UT C

   import pytz
   difference = unaware_dt.replace(tzinfo=pytz.UTC) - aware_dt
   print(difference.seconds) # 3600 seconds or 1 hour
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...