Задать вопрос
@Brodyachiykot

Как в Python Datetime сделать так, чтобы менялся год и месяц?

Здравствуйте, у меня возникла проблема с датой и временем. Мне нужно сделать, чтобы плата проводилась в указанный день, но менялись год и месяц.
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Можно подобрать одну из хороших мощных библиотек для удобной работы с дантами, чтобы там были методы перелистывания дат помесячно.
Но если не хочется плодить зависимости, то я рекомендую штатно разобрать дату на день, месяц и год, убедиться, что день не превышает 28 (иначе такое число не в каждом месяце найдётся), а затем прибавить к месяцу 1 по модулю 12. В случае переполнения нужно увеличить еще и год.

Такое элегантно записыается с помощью функции divmod:
month -= 1
year_increment, month = divmod(month + 1, 12)
month += 1
Ответ написан
Комментировать
@dmshar
Если вы работаете с Pandas то есть более простое решение.
Добавляем заданное количество месяцев (в данном случае -6)
import datetime as dt
import pandas as pd
date = dt.date.today() + pd.offsets.DateOffset(months=6)
print(date)

Результат:
2022-07-20 00:00:00

Добавляем год:
date = dt.date.today() + pd.offsets.DateOffset(years=1)
print(date)

Результат:
2023-01-20 00:00:00

Добавляем и то и другое:
date = dt.date.today() + pd.offsets.DateOffset(years=1,months=3)
print(date)

Результат:
2023-04-20 00:00:00
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы