J'ai besoin d'incrémenter le mois d'une valeur datetime
next_month = datetime.datetime(mydate.year, mydate.month+1, 1)
quand le mois est 12, il devient 13 et déclenche une erreur "month must be in 1..12". (Je m'attendais à ce que l'année soit incrémentée)
Je voulais utiliser timedelta, mais il ne prend pas l'argument du mois. Il y a le package python relativedelta, mais je ne veux pas l'installer juste pour ça. Il y a aussi une solution en utilisant strtotime.
time = strtotime(str(mydate));
next_month = date("Y-m-d", strtotime("+1 month", time));
Je ne veux pas convertir de datetime en str puis en time, puis en datetime; c'est donc toujours une bibliothèque aussi
Est-ce que quelqu'un a une bonne et simple solution comme utiliser timedelta?
4 votes
Il s'agit d'une lacune de la balise
datetime
de Python qui doit être capable de fairedatetime.timedelta(months=6)
. La méthode LocalDate.plusMonths() de Java incrémente le mois, puis assure une date valide en décrémentant le champ jour à la dernière date valide du mois. Python devrait faire la même chose par défaut sans avoir recours à des modules externes, mais tant que ce n'est pas corrigé, le code java peut être facilement porté - en fait, c'est à peu près le même que le code dans la réponse acceptée.