Использование часового пояса с помощью openpyxl

Мне нужно добавить дату в файл excel. Я использую временные зоны для этих дат. Это очень хорошо работает с фреймворком django rest. (Мои GET запросы возвращают дату в таком формате: 2022-07-23T13:19:59+02:00) То же самое в Django admin, часовой пояс Европа/Париж хорошо учитывается (+02:00).

Однако, когда я использую openpyxl, указанное время на 2 часа позже (он принимает часовой пояс UTC).

sheet.append([date_recorded.strftime("%d/%m/%Y %H:%M:%S")])

То же самое, если я выведу эту дату в консоль. (2022-07-11 15:19:50+00:00)

Как это исправить?

Вы можете просто преобразовать его в желаемую зону следующим образом

from dateutil import tz
utctime = "YOUR CURRENT VALUE OF DATETIME"
from_zone = tz.gettz("UTC")
to_zone = tz.gettz("yourzone")
utctime = utctime.replace(tzinfo=from_zone)
new_time = utctime.astimezone(to_zone)

Поскольку вы используете django, вы можете использовать встроенные get_current_timezone для преобразования объектов datetime в местный часовой пояс:

from django.utils import get_current_timezone

timezone = get_current_timezone()
date_recorded = date_recorded.astimezone(timezone)
sheet.append([date_recorded.strftime("%d/%m/%Y %H:%M:%S")])
Вернуться на верх