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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
python实现图片处理和特征提取详解
Nov 13 Python
Python中django学习心得
Dec 06 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
Python闭包和装饰器用法实例详解
May 22 Python
Python流程控制 while循环实现解析
Sep 02 Python
关于tensorflow的几种参数初始化方法小结
Jan 04 Python
python3通过udp实现组播数据的发送和接收操作
May 05 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注销代码(session注销)
2012/05/31 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
php封装一个异常的处理类
2017/06/08 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
腾讯的ip接口 方便获取当前用户的ip地理位置
2010/11/25 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
OpenCV 边缘检测
2019/07/10 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
采购部主管岗位职责
2014/01/01 职场文书
安全检查验收制度
2014/01/12 职场文书
运动会开幕式解说词
2014/02/05 职场文书
设计专业自荐信
2014/06/19 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs