python - Python 中的年和日日期差异(无月)

标签 python

我有两个日期:2005/04/10 和 2018/02/11。

以下代码计算年、月、日的差值:

from datetime import datetime
from dateutil.relativedelta import relativedelta
start_date = datetime(2005,4,10)
end_date = datetime(2018,2,11)
difference = relativedelta(end_date, start_date)
print(difference.years)
print(difference.months)
print(difference.days)

输出是:

12
10
1

12年10个月零1天。问题是我对几个月不感兴趣,我只想要几年和几天。在我的示例中,它应该是 12 年零 306 天。我知道一个很好的近似值是 10 个月 * 30 = 300 天,但结果是 301,而不是 306。我想精确计算天数,同时考虑闰月和每个月的天数差异。 Python 中是否有任何内置方法可以做到这一点?

我已经对 StackOverflow 进行了研究以找到答案,但所有与我的问题相关的答案都没有回答我的问题。

最佳答案

在您已经编写的代码之后,执行以下操作:

mid_date = datetime(start_date.year + difference.years, start_date.month, start_date.day)
print((end_date - mid_date).days)

这为您的示例输入提供了 307。

想法是将原始 start_date 偏移 difference.years 以避免重复计算那部分差异。

关于python - Python 中的年和日日期差异(无月),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112430/

相关文章:

python - IPython 和内联 Matplotlib 图大小

python - 使用python将S3 gzip源对象流式解压到S3目标对象?

python - 如何使用 Django Rest Framework 修补单个字段?

python - 当 Firefox 不是默认浏览器时,使用 Firefox 使用 Python 打开 HTML 文件

python - 将 pandas DataFrame 读取到 Stocker 时出现问题

Python - 在 Windows 中的多进程下创建线程时出现 "can' t pickle thread.lock“错误

Python 字典 : changing the order of nesting

python - pip 安装失败,显示 "connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)"

python - 如何将 pytorch 模型保留在 redis 缓存中以更快地访问模型以进行视频流?

c++ - 为什么 Python/C API 在 PyRun_SimpleFile 上崩溃?