Использование часового пояса с помощью 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")])