欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 計(jì)算兩個(gè)日期相差多少個(gè)月實(shí)例代碼

 更新時(shí)間:2017年05月24日 08:24:26   作者:異彩飛天  
這篇文章主要介紹了python 計(jì)算兩個(gè)日期相差多少個(gè)月實(shí)例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

近期,由于業(yè)務(wù)需要計(jì)算兩個(gè)日期之前相差多少個(gè)月。我在網(wǎng)上找了很久,結(jié)果發(fā)現(xiàn)萬能的python,居然沒有一個(gè)模塊計(jì)算兩個(gè)日期的月數(shù),像Java、C#之類的高級(jí)語言,都會(huì)有(date1-date2).months的現(xiàn)成方法,覺得不可思議。說句實(shí)在的,一直覺得python 的日期處理模塊真心不好用。

哦,對(duì)了,別跟我說 datetime, calendar, dateutil 這些模塊,因?yàn)槲叶荚囘^了,都沒用。有個(gè)竟然算出來還有錯(cuò)。datetime.timedelta只能計(jì)算出日時(shí)分秒。對(duì)年月卻不支持。網(wǎng)上一搜,一大堆的。

dateutil.rrule這個(gè)例子是我好不容易找到的,請(qǐng)看我的測(cè)試結(jié)果:

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}")

看到這樣的結(jié)果,我只能呵呵了。

廢話不多少,獻(xiàn)上自己寫的代碼:

該代碼返回,(月,小數(shù)月)

import datetime

import calendar as c



d1 = datetime.date(2016, 2, 29)

d2 = datetime.date(2019, 3, 31)



def calmonths(startdate, enddate):

# 計(jì)算兩個(gè)日期相隔月差

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}")

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python元類與迭代器生成器案例詳解

    Python元類與迭代器生成器案例詳解

    這篇文章主要介紹了Python元類與迭代器生成器案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Python裝飾器有哪些絕妙的用法

    Python裝飾器有哪些絕妙的用法

    本文主要介紹了Python裝飾器有哪些絕妙的用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn)

    numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn)

    本文主要介紹了numpy存取數(shù)據(jù)(tofile/fromfile)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python代碼中偏函數(shù)的使用詳解

    Python代碼中偏函數(shù)的使用詳解

    Python中的偏函數(shù)是來自函數(shù)式編程的一個(gè)強(qiáng)大工具,它的主要目標(biāo)是減少函數(shù)調(diào)用的復(fù)雜性,本文將詳細(xì)介紹偏函數(shù)的具體使用,需要的小伙伴可以了解下
    2023-12-12
  • 簡單的通用表達(dá)式求10乘階示例

    簡單的通用表達(dá)式求10乘階示例

    這篇文章主要介紹了簡單的通用表達(dá)式求10乘階示例,需要的朋友可以參考下
    2014-03-03
  • 解決pandas read_csv 讀取中文列標(biāo)題文件報(bào)錯(cuò)的問題

    解決pandas read_csv 讀取中文列標(biāo)題文件報(bào)錯(cuò)的問題

    今天小編就為大家分享一篇解決pandas read_csv 讀取中文列標(biāo)題文件報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 搭建?Selenium+Python開發(fā)環(huán)境詳細(xì)步驟

    搭建?Selenium+Python開發(fā)環(huán)境詳細(xì)步驟

    這篇文章主要介紹了搭建?Selenium+Python開發(fā)環(huán)境詳細(xì)步驟的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 最新評(píng)論