'''
计算时间差
'''
import time
import math
import datetime
from datetime import timedelta
from calendar import monthrange
"""时间格式化"""
def date_format(date):
# 时间字符串解析为时间元组
date = time.strptime(date, "%Y%m%d")
# 时间戳转换成datetime对象
date = datetime.datetime(date[0], date[1], date[2])
return date
"""计算天数差值方法20191127-20181127"""
def Ddate(date, date1):
date =date_format(date)
date1 = date_format(date1)
if date == date1:
Ddatevalue=1 # 时间相等取1
else:
Ddatevalue = abs((date - date1).days)# 取绝对值
return Ddatevalue
"""计算月份差值方法yyyymmdd"""
def Mdate(date, date1):
Mdatevalue =Ddate(date, date1)
Mdatevalue = math.ceil(Mdatevalue / 30)
return Mdatevalue
"""计算月份差值方法yyyymm"""
def mdate(date, date1):
date = time.strptime(date, "%Y%m%d")
date1 = time.strptime(date1, "%Y%m")
mdatevalue = (date[0]-date1[0])*12+(date[1]-date1[1])
if mdatevalue==0:
mdatevalue=1
else:
mdatevalue=mdatevalue
print('月份差:', mdatevalue)
"""计算月份差值方法yyyymm"""
def mdate2(date, date1):
date = time.strptime(date, "%Y%m")
date1 = time.strptime(date1, "%Y%m")
mdatevalue = (date[0]-date1[0])*12+(date[1]-date1[1])
if mdatevalue==0:
mdatevalue=1
else:
mdatevalue=mdatevalue
print('月份差:', mdatevalue)
def monthdelta(d1, d2):
delta = 0
while True:
mdays = monthrange(d1.year, d1.month)[1]
d1 += timedelta(days=mdays)
if d1 <= d2:
delta += 1
else:
break
return delta
"""计算年份差值方法yyyy"""
def Ydate(date, date1):
date = date[0:4]
date1 = date1[0:4]
if date==date1:
Ydatevalue =1
else:
Ydatevalue = abs(int(date) - int(date1))
print('年份差:', Ydatevalue)
return Ydatevalue
if __name__ == "__main__":
# print(Mdate('20190228','20191220'))
# mdate(date,date1)
# d1 = time.strptime('201911', "%Y%m")
# monthdelta(d1,'201802')
print(mdate('20221231','202210'))
# < PD01AR01 > 2019 - 12 - 20 < / PD01AR01 >
# < PD01AR02 > 2019 - 02 - 28 < / PD01AR02 >
# print('天数差为:', Ddate('20191020','20191228'))
# print('天数差为:', Ddate('20190228','20191226'))
# print('天数差为:', Ddate('20191228','20191028'))
# print('天数差为:', Ddate('20191228','20191128'))
# print('天数差为:', Ddate('20191228','20190630'))
# print(mdate2('201910','201809'))
# print('天数差为:', Ddate('20191220','20190228'))
# mdate('20191127', '201908')
# print(Mdate('20191228','20181120'))
# print(Mdate('20220528','20210630'))
# print(Mdate('20220528','20211130'))
# print(Mdate('20220528','20220302'))
# print(Mdate('20191221','20180829'))
# print(Mdate('20191228','20141227'))
# print(Mdate('20191228','20190928'))
# print(date_format('20191101'))
# print(342/12)
# print(monthdelta('202006','201801'))