输入一个日期,计算这个日期与 2018-03-12差多少天;

#coding=gbk
'''
1、计算输入日期与基准日期的差异天数
2、方法2 利用time包
'''

#输入一个日期,计算这个日期与 2018-03-12差多少天;
def count_days():
    dt_1='2018-03-12'
    dt_2=[int(i) for i in dt_1.split('-')]
    yy,mm,dd=dt_2
    #print('yy,mm,dd:',yy,mm,dd)
    print('基准日期:',dt_1)
    date_input=input('请输入日期:格式2018-01-01\n')

    dt=date_input.split('-')
    dt=[int(i) for i in dt]
    year,month,day=dt
    print('year,month,day',date_input)
    if year<yy or (year==yy and month<mm) or (year==yy and month==mm and day<dd):
        print('输入日期必须大于基准日期,1970-3-12\n请重新输入!\n')
        return None

    if year==yy and day>=dd:
        diff_year=0
        diff_month=month-mm
        diff_day=day-dd
    elif year==yy and day<dd:
        diff_year=0
        diff_month=month-mm-1
        diff_day=30-dd+day
    elif year>=yy+1:
        diff_year=year-yy-1
        diff_month=12-mm-1+month
        diff_day=30-dd+day
    print('diff_year:%s,diff_month:%s,diff_day:%s'%(diff_year,diff_month,diff_day))
    return diff_year*365+diff_month*30+diff_day
'''
if __name__=='__main__':
    
    i=0
    while i<5:
        result=count_days()
        
        if result:
            
            print('差异天数为:%s天'%result)
        i+=1
'''

#方法2:利用time包计算差异天数

import time

def isleap_year(year):
    if (year%4==0 and year%100!=0) or year%400==0:
        return 366
    return 365

def count_days_1():
    dt_1='2018-03-12'
    date_input=input('请输入日期:格式2018-01-01\n')

    dt_format_1=time.strptime(dt_1,'%Y-%m-%d')
    date_format=time.strptime(date_input,'%Y-%m-%d')

    yy=int(dt_1.split('-')[0])
    year=int(date_input.split('-')[0])

    day_count=dt_format_1.tm_yday
    date_count=date_format.tm_yday

    if year==yy:
        
        diff_day=date_count-day_count
        return diff_day
    elif year>=yy+1:
        year_days=0
        for i in range(yy,year):
            year_days+=isleap_year(i)
            print('year_days:',year_days)
            
        diff_day=year_days-day_count+date_count
        
        return diff_day

i=0
while i<4:
    aa=count_days_1()
    print('方法2计算的差异天数为:%s天'%aa)
    i+=1

 

 

posted @ 2019-01-01 17:04  小金儿  阅读(352)  评论(0编辑  收藏  举报