Python計算兩個日期之間相差的天數

2021-10-10 01:33:45 字數 2482 閱讀 9086

python提供的有關時間的庫可以幫助我們方便地計算出兩個日期之間的天數,那麼不使用python提供的庫該怎麼計算呢,筆者這裡想了一種方法,以較早日期所在年的第一天作為起點,分別計算兩個日期相對這一天的天數,然後把得到的相對天數相減,這樣就能得到兩個日期之間相差的天數。

import numpy as np

defdatedistance

(day1, day2)

:# day2是日期較大的一天,day1是日期較小的一天

year = np.linspace(day1[0]

, day2[0]

, day2[0]

-day1[0]

+1).astype(

int)

flag1 = np.zeros((12

,))for i in

range

(day1[1]

-1):

flag1[i]=1

flag2 = np.zeros((12

,))for i in

range

(day2[1]

-1):

flag2[i]=1

year1 =0if

(day1[0]

%4==0

and day1[0]

%100!=0

)or(day1[0]

%400==0

and day1[0]

%100==0

):for j in

range(12

):year1 += flag1[j]

*month1[j]

else

:for j in

range(12

):year1 += flag1[j]

*month2[j]

year1 += day1[2]

year2 =0if

(day2[0]

%4==0

and day2[0]

%100!=0

)or(day2[0]

%400==0

and day2[0]

%100==0

):for j in

range(12

):year2 += flag2[j]

*month1[j]

else

:for j in

range(12

):year2 += flag2[j]

*month2[j]

year2 += day2[2]

for item in year[:-

1]:if

(item %4==

0and item %

100!=0)

or(item %

400==

0and item %

100==0)

: year2 +=

366else

: year2 +=

365return

int(year2 - year1)

month1 =[31

,29,31

,30,31

,30,31

,31,30

,31,30

,31]# 閏年

month2 =[31

,28,31

,30,31

,30,31

,31,30

,31,30

,31]# 普通年

print

('請輸入較前日期的年份,月份,日期(示例:2020,1,25):'

)a1, b1, c1 =

map(

int,

input

('輸入年月日,用逗號隔開:'

).split(

',')

)d1 =

[a1, b1, c1]

print

('請輸入較後日期的年份,月份,日期(示例:2020,1,25):'

)a2, b2, c2 =

map(

int,

input

('輸入年月日,用逗號隔開:'

).split(

',')

)d2 =

[a2, b2, c2]

print

('{}年{}月{}日和{}年{}月{}日之間有{}天'

.format

(a1, b1, c1, a2, b2, c2, datedistance(d1, d2)

))

計算結果如下圖所示:

計算一下今天到今年年底有多少天

今天到今年年底是86天

Python計算兩個日期之間天數

有的時候要統計兩個日期之間的相距天數,可能有很多種方法,但使用datetime模組的datetime方法無疑是裡面比較簡單的,具體 如下 import datetime d1 datetime.datetime 2018,10,31 第乙個日期 d2 datetime.datetime 2019,0...

計算兩個日期之間的天數

問題描述 給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。時間限制 1000 記憶體限制 65536 輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,en...

25 計算兩個日期之間的天數

總時間限制 1000ms 記憶體限制 65536kb 描述給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,...