近期,由于业务需要计算两个日期之前相差多少个月。我在网上找了很久,结果发现万能的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 计算两个日期相差多少个月相关推荐

  1. python计算两个日期相差的天数的代码

    如下资料是关于python计算两个日期相差的天数的代码,希望能对各位朋友有一些好处. d1 = datetime.datetime(2008, 2, 16) d2 = datetime.datetim ...

  2. php计算多少个月前,PHP怎么计算两个日期相差几个月

    PHP怎样计算两个日期相差几个月? function getMonthNum( $date1, $date2, $tags='-' ){ $date1 = explode($tags,$date1); ...

  3. Python计算两个日期相差的天数

    有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别.而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那 ...

  4. 【时间处理】Python 计算两个日期相差的天数

    有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别.而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那 ...

  5. python判断天数_Python计算两个日期相差天数的方法示例

    本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...

  6. 计算两个日期相差的小时差

    计算出:两个日期之间的相差天数,乘小时数 <%@ page language="java" import="java.util.*" pageEncodi ...

  7. 计算两个日期相差的天数

    JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...

  8. java计算两个日期相差月数

    1.计算两个日期相差月数,不满一月按一月算 import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  9. mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数

    MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...

最新文章

  1. 当代计算机技术在建筑设备中的应用,智能化建筑中计算机技术应用研究原稿(样例3)...
  2. SpringBoot中的Quartz应用
  3. 惊了!Chrome浏览器竟然自带的一款恐龙游戏【免下载】
  4. TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化
  5. 如何使用JavaScript或JQuery检测一个URL文件是否存在?
  6. HTML5前端开发真的会被取代吗?
  7. numpy教程:函数库和ufunc函数
  8. 【翻译召集令】HenCoder 反向翻译计划
  9. 信息化建设规划制定的难点及关键点分析
  10. SSD目标检测(Single Shot MultiBox Detector)(一)
  11. FFmpeg常用指令记录sdp中提取sps/pps信息sps/pps(STAP-A解析)
  12. 屁屁岚分析开源项目3——贴片机飞达控制板
  13. 【老生谈算法】基于matlab的车牌识别算法详解及程序源码——车牌识别算法
  14. 2021系统架构设计师论文真题
  15. Android 适配器 自定义
  16. 中标麒麟桌面系统自定义屏保
  17. 某宝付费买的价值上万的60G的Python学习资源,0基础轻松赚钱到手软,请低调使用,禁止外传~...
  18. Origin 纵坐标名称栏中插入公式
  19. MES系统中常见的数据采集方法
  20. codeforces 545 Round #303 (Div. 2) E Paths and Trees

热门文章

  1. Java中浮点数的基础知识
  2. [CareerCup] 14.4 Templates Java模板
  3. 轻松自动化---selenium-webdriver(python) (七)
  4. ABAP检查日期and时间合法性的函数
  5. PO RELEASE 采购订单审核(支持多级审核)
  6. 你还能再“二”一些吗?
  7. 永洪Desktop交叉表怎么按月份汇总
  8. 欠122亿乐视能不能“真还”?数据拆解乐视债务账单
  9. 2020正收益女性占比高达 58.9%,数据揭秘男女谁更会理财?
  10. 什么?口红输给口罩了?