datetime utcoffset, total_seconds()

Вопрос 1. Почему в приведенном ниже коде для текущего времени с учетом часовых поясов (типа datetime) значение utc offset для разных часовых поясов получается целое (2,3 часа), а для значения datetime созданного для конкретных значений часов, минут, секунда какие-то странные значения: для Каира 02:05, для Киева +02:02, для Лондона -00:01

from datetime import *
import pytz
    d = []
d.append({'tz':pytz.timezone('Africa/Cairo')})
d.append({'tz':pytz.timezone('Europe/Kiev')})
d.append({'tz':pytz.timezone('Europe/London')})

for i in range(len(d)):
    # d[i].update({'now':now[i]})
    d[i].update({'now': datetime.now(d[i].get('tz'))})
    d[i].update({'reminder_datetime': datetime(year=1, month=1, 
    day=1, hour=12, minute=0, tzinfo=d[i]['tz'])})
    d[i].update({'reminder_time': time(hour=12, minute=0, 
    tzinfo=d[i]['tz'])})


for i in range(len(d)):
    tz = d[i]['tz']
    cur = d[i]['now']
    reminder = d[i]['reminder_datetime']
    reminder_time = d[i]['reminder_time']
    offset = reminder.utcoffset().total_seconds()
    offset_time = reminder_time.utcoffset().total_seconds()

Вывод:

Время текущее в Africa/Cairo: 2022-04-12 14:16:41.890879+02:00
Напоминание на 12:00:00 по Africa/Cairo: 0001-01-01 12:00:00+02:05 Время текущее в Europe/Kiev: 2022-04-12 15:16:41.890879+03:00
Напоминание на 12:00:00 по Europe/Kiev: 0001-01-01 12:00:00+02:02 Время текущее в Europe/London: 2022-04-12 13:16:41.890879+01:00 Напоминание на 12:00:00 по Europe/London: 0001-01-01 12:00:00-00:01

Вопрос 2. Почему для типа time функция получения utcoffset возвращает None, а для datetime корректно возвращает количество секунд смещения времени?


Ответы (0 шт):