Коригування часової зони за допомогою pytz

Часто локальні сервіси віддають час у локальній часовій зоні.

Розглядатимо приклад часової зони Києва +03:00.

Сервіс віддає там час у такому вигляді

2023-09-17 14:37:27

який насправді мав би мати вигляд

2023-09-17 14:37:27+03:00

Ну а для запису в БД нам потрібен час в нуловій часовій зоні і без інфо про часову зону, тобто

2023-09-17 11:37:27


Тепер розглянемо як виправити це непорозуміння за допомогою коду та пакету pytz

1. Отримаємо потрібну нам часову зону

tz = pytz.timezone('Europe/Kyiv')

можливий варіант

tz = pytz.timezone('Europe/Kiev')

2. Додамо нашу таймозону в дату за допомогою функції localize

ctime = tz.localize(ctime)

2023-09-17 14:37:27+03:00

3. Скоригуємо час в нулову таймзону за допомогою функції astimezone

ctime = ctime.astimezone(pytz.timezone('GMT'))

2023-09-17 11:37:27+00:00

4. Повернемо час у формат без таймзони

ctime = ctime.replace(tzinfo=None)

2023-09-17 11:37:27



Повний текст прикладу

import pytz
from datetime import datetime
ctime = datetime.strptime('2023-09-17 14:37:27', '%Y-%m-%d %H:%M:%S')
print(ctime)
tz = pytz.timezone('Europe/Kyiv')
ctime = tz.localize(ctime)
print(ctime)
ctime = ctime.astimezone(pytz.timezone('GMT'))
print(ctime)
ctime = ctime.replace(tzinfo=None)
print(ctime)
Коригування часової зони за допомогою pytz
Володимир Карабанов 18 вересня 2023 р.
Поділитися цією публікацією
Теги
Архів
Кольорові теги