输入一个日期,包括年、月和日,计算该日期是这一年的第几天

问题:输入一个日期,包括年、月和日,计算该日期是这一年的第几天。

思路:输入年月日之后,这是这一年中的第几天 = 之前月数的总天数+当月的日子

先想一下如果是手动算的话需要怎么算?

通常的年份的2月份都是28天,如果是闰年,闰年的2月份是29天。

比如输入一个2022-10-13

    计算应该是:1(31)+2(28或者29天)+3(31)+4(30)+5(31)+6(30)+7(31)+8(31)+9(30)+13

比如输入一个2022-07-13

    计算应该是:1(31)+2(28或者29天)+3(31)+4(30)+5(31)+6(30)+13

比如输入一个2022-03-13

    计算应该是:1(31)+2(28或者29天)+13

可以看到这个是一个月份的累加,中间没有间断,如果要计算10月的就要从1月加到9月。

这个适合python中的 range()函数,然后里面是一个循环的累加

方法1:

#
date=input("请输入年月日(格式举例:2000-01-05):")
year=int(date[:4])
month=int(date[5:7])
day=int(date[8:10])
f_run=[31,28,31,30,31,30,31,31,30,31,30,31]   #通常的年的每个月的天数
tall_day=0
#判断年是否闰年?
if (year%4==0 and year%100!=0 or year%400==0) and month>2:
        for i in range(month-1):
            tall_day+=f_run[i]
        tall_day+=1            #如果是闰年并且是3月份以后,需要增加1天        
else:
        for i in range(month-1):
            tall_day+=f_run[i]           
tall_day+=day
print(date+"是当年的第"+str(tall_day)+"天")

例子:输入:2020-04-19,输出:110天

输入:2022-02-03,输出:34天

输入:2022-03-15,输出:74天

输入:2000-03-01,输出:61天

方法2: 通过datetime库函数实现

import datetime
 
date=input("请输入年月日(格式举例:2000-01-05):")
year=int(date[:4])
month=int(date[5:7])
day=int(date[8:10])
date1 = datetime.date(year=int(year), month=int(month), day=int(day))
date2 = datetime.date(year=int(year), month=1, day=1)
tall_day = (date1 - date2).days + 1
print(date+"是当年的第"+str(tall_day)+"天")

方法3:通过datetime库函数实现

from datetime import datetime
 
cdate=input("请输入年月日(格式举例:2000-01-05):")
end=datetime.strptime(cdate, "%Y-%m-%d")
start = datetime(end.year,1,1)
tall_day = (end - start).days + 1
print(cdate+"是当年的第"+str(tall_day)+"天")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值