Ответы пользователя по тегу Работа с датой/временем
  • Как проверить, находится ли время в нужном диапазоне?

    Maksim_64
    @Maksim_64
    Data Analyst
    обрати внимание у тебя старт 23 часа вечера а end час ночи. а сейчас например около 9 утра по москве, в общем вот
    import datetime
    
    start = datetime.time(6, 30)    # 6:30 утра
    end = datetime.time(13, 30)  # 13:30 дня
    now = datetime.datetime.now().time() 
    
    if (start <= now <= end):
        print("Work!")

    все работает.
    Ответ написан
    Комментировать
  • Как рассчитать экспоненциальное скользящее среднее с учётом различных по длине временных интервалов?

    Maksim_64
    @Maksim_64
    Data Analyst
    Без заполнения отсутствующих данных решения нет и быть не может. Экспоненциальное скользящее среднее дает меньше и меньше веса для данных которые отдалены по времени и соответствено большие веса для последних дат (в пределах окна). То есть это всего лишь один из методов нахождение среднего с весами для каждой точки данных.

    Вы собираетесь решать задачу где вы не можете сформировать окна по причине отсутствия данных, это бесполезно, вы должны заполнить эти данные.
    я читал про обработку неполных временных рядов - заполнение средним, интерполяция и так далее, но не знаю, стоит ли ими пользоваться - интервалы времени действительно очень большие, и данные зависят не только от времени.
    Вот здесь вы дело говорите. Неполные временные ряды заполняют, средними или медианным в зависимости от дистрибуции, иногда ближайшими значениями (в вашем случае слабо верится это имеет смысл), экстраполируют (тоже специфический кейс слабо верится это имеет смысл).

    Все остальное вы верно делаете стандартный слаживающий фактор все так, затем он будет использован для подсчета каждого индивидуального веса w_i = (1 - alpha)^i для каждой ваше точки данных в пределах окна. Просто вы ищете математического решения там где его нет, это вопрос как правильно заполнить недостающие данные.
    Ответ написан
  • Как создать бот, определяющий сколько дней осталось до дня рождения (при нажатии СТАРТ дата запрашивается в произвольном формате (д-м-г)?

    Maksim_64
    @Maksim_64
    Data Analyst
    вот код решающий проблему. Под api вашего бота построите сами.
    test_date = input("Ввведите дату в формате 'dd-mm-yyyy': ")
    now = datetime.datetime.now()
    then = datetime.datetime.strptime(test_date, "%d-%m-%Y")
    delta1 = datetime.datetime(now.year, then.month, then.day)
    delta2 = datetime.datetime(now.year+1, then.month, then.day)
    
    result = ((delta1 if delta1 > now else delta2) - now).days
    print(f'До вашего следущего дня рождения осталось {result} дней')


    Так же вы не уточнили что делать если день рождение сегодня, это 0 дней или 364 ну легко подработаете как вам будет удобно.
    Ответ написан
    4 комментария
  • Python как добавить 3 часа к времени?

    Maksim_64
    @Maksim_64
    Data Analyst
    вы должны использовать объект timedelta.
    import datetime
    print((datetime.datetime.now() + datetime.timedelta(hours=3)).strftime("%d.%m.%Y %H:%M:%S"))
    Ответ написан
    Комментировать