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的setuptools框架下生成egg的教程
Apr 13 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python 含子图的gif生成时内存溢出的方法
Jul 07 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
对django 模型 unique together的示例讲解
Aug 06 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
python如何编写win程序
Jun 08 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中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php实现读取内存顺序号
2015/03/29 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
2015/07/13 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
利用css+原生js制作简单的钟表
2020/04/07 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python读写ini文件示例(python读写文件)
2014/03/25 Python
python根据路径导入模块的方法
2014/09/30 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
水利学院求职自荐书
2014/02/01 职场文书
优秀实习生感言
2014/03/01 职场文书
幼儿园运动会口号
2014/06/07 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
Springboot如何使用logback实现多环境配置?
2021/06/16 Java/Android
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python