python 计算两个日期相差多少个月
近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的python,居然没有一个模块计算两个日期的月数,像Java、C#之类的高级语言,都会有(date1-date2).months的现成方法,觉得不可思议。说句实在的,一直觉得python 的日期处理模块真心不好用。
哦,对了,别跟我说 datetime, calendar, dateutil 这些模块,因为我都试过了,都没用。有个竟然算出来还有错。datetime.timedelta只能计算出日时分秒。对年月却不支持。网上一搜,一大堆的。
dateutil.rrule这个例子是我好不容易找到的,请看我的测试结果:
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import datetimefrom dateutil import rruled1 = 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学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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 / currmonthdayselif 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 / currmonthdayselse:
holdmonths = (enddate.year - startdate.year
) * 12 + enddate.month - startdate.monthreturn holdmonths, decimalmonthmonths = calmonths(d1, d2)print(f"months={months}")
python 计算两个日期相差多少个月相关推荐
- python计算两个日期相差的天数的代码
如下资料是关于python计算两个日期相差的天数的代码,希望能对各位朋友有一些好处. d1 = datetime.datetime(2008, 2, 16) d2 = datetime.datetim ...
- php计算多少个月前,PHP怎么计算两个日期相差几个月
PHP怎样计算两个日期相差几个月? function getMonthNum( $date1, $date2, $tags='-' ){ $date1 = explode($tags,$date1); ...
- Python计算两个日期相差的天数
有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别.而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那 ...
- 【时间处理】Python 计算两个日期相差的天数
有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别.而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那 ...
- python判断天数_Python计算两个日期相差天数的方法示例
本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...
- 计算两个日期相差的小时差
计算出:两个日期之间的相差天数,乘小时数 <%@ page language="java" import="java.util.*" pageEncodi ...
- 计算两个日期相差的天数
JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...
- java计算两个日期相差月数
1.计算两个日期相差月数,不满一月按一月算 import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
最新文章
- 当代计算机技术在建筑设备中的应用,智能化建筑中计算机技术应用研究原稿(样例3)...
- SpringBoot中的Quartz应用
- 惊了!Chrome浏览器竟然自带的一款恐龙游戏【免下载】
- TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化
- 如何使用JavaScript或JQuery检测一个URL文件是否存在?
- HTML5前端开发真的会被取代吗?
- numpy教程:函数库和ufunc函数
- 【翻译召集令】HenCoder 反向翻译计划
- 信息化建设规划制定的难点及关键点分析
- SSD目标检测(Single Shot MultiBox Detector)(一)
- FFmpeg常用指令记录sdp中提取sps/pps信息sps/pps(STAP-A解析)
- 屁屁岚分析开源项目3——贴片机飞达控制板
- 【老生谈算法】基于matlab的车牌识别算法详解及程序源码——车牌识别算法
- 2021系统架构设计师论文真题
- Android 适配器 自定义
- 中标麒麟桌面系统自定义屏保
- 某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传~...
- Origin 纵坐标名称栏中插入公式
- MES系统中常见的数据采集方法
- codeforces 545 Round #303 (Div. 2) E Paths and Trees
热门文章
- Java中浮点数的基础知识
- [CareerCup] 14.4 Templates Java模板
- 轻松自动化---selenium-webdriver(python) (七)
- ABAP检查日期and时间合法性的函数
- PO RELEASE 采购订单审核(支持多级审核)
- 你还能再“二”一些吗?
- 永洪Desktop交叉表怎么按月份汇总
- 欠122亿乐视能不能“真还”?数据拆解乐视债务账单
- 2020正收益女性占比高达 58.9%,数据揭秘男女谁更会理财?
- 什么?口红输给口罩了?