python - 如何在不使用库的情况下在 python 中按自定义月份增加日期时间

我需要增加日期时间值的月份

next_month = datetime.datetime(mydate.year, mydate.month+1, 1)

当月份为 12 时,它变为 13 并引发错误“月份必须在 1..12”。 (我预计年份会增加)

我想使用 timedelta,但它不需要月份参数。 有relativedelta python 包,但我不想仅仅为此安装它。 还有一个使用 strtotime 的解决方案.

time = strtotime(str(mydate));
next_month = date("Y-m-d", strtotime("+1 month", time));

我不想从 datetime 转换为 str,然后再转换为 time,然后再转换为 datetime;因此,它仍然是一个图书馆

有没有人有任何好的和简单的解决方案,就像使用 timedelta 一样?

最佳答案

这是使用 dateutil's relativedelta 将月份添加到日期的简短而巧妙的方法.

from datetime import datetime
from dateutil.relativedelta import relativedelta
    
date_after_month = datetime.today()+ relativedelta(months=1)
print('Today: ',datetime.today().strftime('%d/%m/%Y'))
print('After Month:', date_after_month.strftime('%d/%m/%Y'))
Today:  01/03/2013

After Month: 01/04/2013

一句警告:relativedelta(months=1)relativedelta(month=1)有different meanings .传递 month=1 会将原始日期中的月份替换为一月,而传递 months=1 会将原始日期增加一个月。

注意:这需要 python-dateutil 模块。如果您使用的是 Linux,则需要在终端中运行此命令才能安装它。

sudo apt-get update && sudo apt-get install python-dateutil

解释:Add month value in python

https://stackoverflow.com/questions/4130922/

相关文章:

linux - 使用脚本自动输入 SSH 密码

python - 检查字符串是否仅包含空格

python - 如何将整数转换为任何基数的字符串?

linux - 更优雅 "ps aux | grep -v grep"

linux - httpd : Could not reliably determine the s

python - 重定向到 Flask 中的 URL

python - 您如何以编程方式设置属性?

linux - 你能在 Linux 上运行 Xcode 吗?

python - 自动创建 requirements.txt

linux - 是否有适用于 Linux 的 WinSCP?