如何在Python中计算两个日期的月份数?仅基于月份值而非30天规则
如何在Python中基于月份值计算两个日期的月份数?
根据需求,我们需要仅按月份数值统计两个日期之间的月份数(包含起始和结束月份),对应示例如下:
输入:开始日期:31-07-2022,结束日期:01-08-2022
输出:2个月
输入:开始日期:01-01-2022,结束日期:01-01-2023
输出:13个月
实现思路
核心逻辑是提取两个日期的年份和月份,计算年份差对应的总月份,加上月份差后再加1(确保包含起始月份),公式为:总月份数 = (结束年份 - 开始年份) * 12 + (结束月份 - 开始月份) + 1
代码实现
使用Python内置的datetime模块解析日期字符串,再按上述公式计算:
from datetime import datetime def get_month_count(start_date_str, end_date_str, date_format="%d-%m-%Y"): # 解析日期字符串为datetime对象 start_dt = datetime.strptime(start_date_str, date_format) end_dt = datetime.strptime(end_date_str, date_format) # 计算总月份数 year_diff = end_dt.year - start_dt.year month_diff = end_dt.month - start_dt.month total_months = year_diff * 12 + month_diff + 1 return f"{total_months}个月" # 测试示例 print(get_month_count("31-07-2022", "01-08-2022")) # 输出:2个月 print(get_month_count("01-01-2022", "01-01-2023")) # 输出:13个月
说明
该方法完全忽略日期中的“日”部分,仅基于年份和月份的数值进行计算,完美匹配需求中的统计规则。
内容的提问来源于stack exchange,提问作者Arul bala
相关产品推荐
相关产品推荐

