python - 如何计算距特定日期还剩几个月?

标签 python django python-datetime python-dateutil

在我的 django 应用程序中,我有一些约会。 我需要使用完整(四舍五入)月份来计算距此日期还剩多少个月。 例如:今天是 19/02/2015(二月),我的“搜索”日期是 04/08/2015。差值应为 6。 如何获得正确的值?

最佳答案

from datetime import datetime,timedelta
from calendar import monthrange

today = datetime.today()
dt = "04/08/2015"

fut = datetime.strptime(dt, "%d/%m/%Y")
diff = 0
while today <= fut:
    today += timedelta(days=monthrange(today.day,today.month)[1])
    diff += 1
print(diff)
6

无需导入日历,我们可以在每次看到新月份时增加计数:

from datetime import datetime,timedelta

today = datetime.today() 
dt = "09/08/2015"

fut = datetime.strptime(dt, "%d/%m/%Y")
diff = 0
while today <= fut:
    mon = today.month
    today += timedelta(days=1)
    if today.month != mon:
        diff += 1
print(diff)
6

如果您想让 future 的一天成为该月的最后一天:

from datetime import datetime, timedelta
from calendar import monthrange

today = datetime.today()
dt = "02/08/2015"

fut = datetime.strptime(dt, "%d/%m/%Y")
fut = fut + timedelta(days=monthrange(fut.day,fut.month)[1]-fut.day)
diff = 0
while today < fut:
    mon = today.month
    today += timedelta(days=1)
    if today.month != mon:
        diff += 1
print(diff)

这是故意不准确的,以便根据需要进行舍入,我们所关心的是我们遇到的不同月份的数量。

关于python - 如何计算距特定日期还剩几个月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615335/

相关文章:

python - 试图覆盖在 python 3.9 中识别的 Django 3.2 应用程序上的 allauth 模板

python - 在python中获取每个月的最后一个星期五

python - python 知道时间是否已经过去

python - 从列表列表中删除所有匹配值

python - 使用 python-docx 合并包含图像的 docx 文件

python - 如何在 Python 中将数据从不同的本地/远程进程流式传输到程序的 STDIN 中?

python - 如何在 python/Django 中获取上个月的简称或完整形式的数字

python - 在 python 中从 CSV 获取特定时间间隔的数据

django - Collectstatic 由于 dj_database_url() 返回 KeyError

python - Django 在查看和下载时生成 csv 文件