Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 13, 2022 08:56:59

vadim_matveev
Зарегистрирован: 2022-03-23
Сообщения: 14
Репутация: +  -1  -
Профиль   Отправить e-mail  

datetime, pytz 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()
 [code python][/code]

Вывод:

Время текущее в 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 корректно возвращает количество секунд смещения времени?

Отредактировано vadim_matveev (Апрель 13, 2022 12:38:01)

Офлайн

#2 Апрель 13, 2022 12:32:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9844
Репутация: +  853  -
Профиль   Отправить e-mail  

datetime, pytz utcoffset, total_seconds()

В твоём коде нет квадратных скобок. Они пропали. Также нет отступов. Они пропали.

  
надо так писать
    отступ
    скобки[индекс]



Офлайн

#3 Апрель 13, 2022 12:38:23

vadim_matveev
Зарегистрирован: 2022-03-23
Сообщения: 14
Репутация: +  -1  -
Профиль   Отправить e-mail  

datetime, pytz utcoffset, total_seconds()

py.user.next
В твоём коде нет квадратных скобок. Они пропали. Также нет отступов. Они пропали.
Спасибо, исправил.

Офлайн

#4 Апрель 14, 2022 11:39:24

vadim_matveev
Зарегистрирован: 2022-03-23
Сообщения: 14
Репутация: +  -1  -
Профиль   Отправить e-mail  

datetime, pytz utcoffset, total_seconds()

Вопрос остался, но обошел проблему следующим образом:

 today = datetime.today()
zone='Europe/Kiev'
timezone(zone).localize(datetime(today.year, today.month, today.day, h, m, 0))

Офлайн

#5 Авг. 11, 2023 10:21:20

celinedion
Зарегистрирован: 2023-08-11
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

datetime, pytz utcoffset, total_seconds()

py.user.next
В твоём коде нет квадратных скобок. Они пропали. Также нет отступов. Они пропали.
Спасибо. Пошел думать.
mapquest

Отредактировано celinedion (Авг. 11, 2023 10:22:12)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version