python 计算两个日期相差多少个月实例代码


Posted in Python onMay 24, 2017

近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议。说句实在的,一直觉得python 的日期处理模块真心不好用。

哦,对了,别跟我说 datetime, calendar, dateutil 这些模块,因为我都试过了,都没用。有个竟然算出来还有错。datetime.timedelta只能计算出日时分秒。对年月却不支持。网上一搜,一大堆的。

dateutil.rrule这个例子是我好不容易找到的,请看我的测试结果:

import datetime

from dateutil import rrule

d1 = datetime.date(2016, 2, 29)
d2 = datetime.date(2019, 3, 31)

months = rrule.rrule(rrule.MONTHLY, dtstart=d1, until=d2).count()

print(f"months={months}")

python 计算两个日期相差多少个月实例代码

看到这样的结果,我只能呵呵了。

废话不多少,献上自己写的代码:

该代码返回,(月,小数月)

import datetime

import calendar as c



d1 = datetime.date(2016, 2, 29)

d2 = datetime.date(2019, 3, 31)



def calmonths(startdate, enddate):

# 计算两个日期相隔月差

samemonthdate = None

try:

samemonthdate = datetime.date(enddate.year, enddate.month,

startdate.day)

except Exception as e:

print(e)

samemonthdate = datetime.date(enddate.year, enddate.month,

c.monthrange(enddate.year,

enddate.month)[1])


holdmonths = 0

decimalmonth = 0.0

if samemonthdate > enddate:

premanthdate = None

try:

premanthdate = datetime.date(enddate.year, enddate.month - 1,

startdate.day)

except Exception as e:

print(e)

premanthdate = datetime.date(enddate.year, enddate.month - 1,

c.monthrange(

enddate.year,

enddate.month - 1)[1])

currmonthdays = (samemonthdate - premanthdate).days

holdmonths = (premanthdate.year - startdate.year

) * 12 + premanthdate.month - startdate.month

decimalmonth = (enddate - premanthdate).days / currmonthdays


elif samemonthdate < enddate:

nextmonthdate = None

try:

nextmonthdate = datetime.date(enddate.year, enddate.month + 1,

startdate.day)

except Exception as e:

nextmonthdate = datetime.date(enddate.year, enddate.month + 1,

c.monthrange(

enddate.year,

enddate.month + 1)[1])

currmonthdays = (nextmonthdate - samemonthdate).days

holdmonths = (samemonthdate.year - startdate.year

) * 12 + samemonthdate.month - startdate.month

decimalmonth = (enddate - samemonthdate).days / currmonthdays


else:

holdmonths = (enddate.year - startdate.year

) * 12 + enddate.month - startdate.month


return holdmonths, decimalmonth


months = calmonths(d1, d2)


print(f"months={months}")

python 计算两个日期相差多少个月实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解Python中变量赋值的问题
Jan 12 Python
python MySQLdb使用教程详解
Mar 20 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
浅述python中深浅拷贝原理
Sep 18 Python
Python 通过打码平台实现验证码的实现
May 13 Python
python scrapy爬虫代码及填坑
Aug 12 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python读取mysql数据绘制条形图
Mar 25 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
django基础之数据库操作方法(详解)
May 24 #Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 #Python
Python生成密码库功能示例
May 23 #Python
Python计算两个日期相差天数的方法示例
May 23 #Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 #Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 #Python
Python常用内置模块之xml模块(详解)
May 23 #Python
You might like
php 使用html5实现多文件上传实例
2016/10/24 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
python如何对链表操作
2020/10/10 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
HTML5本地存储之Web Storage应用介绍
2013/01/06 HTML / CSS
执行力心得体会
2013/12/31 职场文书
个性婚礼策划方案
2014/05/17 职场文书
助理政工师申报材料
2014/06/03 职场文书
公证委托书标准格式
2014/09/11 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
离婚被告代理词
2015/05/23 职场文书
联村联户简报
2015/07/21 职场文书
《开国大典》教学反思
2016/02/16 职场文书
创业计划书之个人工作室
2019/08/22 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers