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 相关文章推荐
简介Django中内置的一些中间件
Jul 24 Python
python实现简单淘宝秒杀功能
May 03 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python IDLE清空窗口的实例
Jun 25 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
TensorFlow学习之分布式的TensorFlow运行环境
Feb 05 Python
python2和python3哪个使用率高
Jun 23 Python
pandas中DataFrame检测重复值的实现
May 26 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在linux下检测mysql同步状态的方法
2015/01/15 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
解决python 文本过滤和清理问题
2019/08/28 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
企业消防安全制度
2014/02/02 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
北京青年观后感
2015/06/15 职场文书
病房管理制度范本
2015/08/06 职场文书
商务信函英语问候语
2015/11/10 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle
关于pytest结合csv模块实现csv格式的数据驱动问题
2022/05/30 Python