Python编程:计算当前日期是一年中的第几天
前言
正常人的思路通常是先判断闰年和平年,然后将每个月的天数相加再加上输入的天数。在平年中,有7个月每月都有31天,这几个月分别是1月、3月、5月、7月、8月、10月和12月。我们可以定义两个数组,一个用于存放闰年,另一个用于存放平年。
对于计算每个月的天数,我们可以使用一个简单的算法。首先,我们知道2月份的天数在闰年和平年是不同的,所以需要单独处理。对于其他月份,可以使用一个循环来累加每个月的天数
完整代码如下
def isleap(year):
if(year%4==0 and year%100 != 0) or year%400==0: # 闰年
# print(f"{year}年是闰年")
return 1
else:
# print(f"{year}年是平年")
return 0
def calc_day(year,month,day):
leap = isleap(int(year))
if leap == 1:
total_day = sum(leap_list[:int(month)-1]) + int(day)
print(f"闰年{raw_data}是第{total_day}天")
else:
total_day = sum(month_list[:int(month)-1]) + int(day)
print(f"平年{raw_data}是第{total_day}天")
if __name__=='__main__':
month_list = [31,28,31,30,31,30,31,31,30,31,30,31] # 平年每月天数
leap_list = [31,29,31,30,31,30,31,31,30,31,30,31] # 闰年每月天数
raw_data = input("请输入年月日格式如2023-11-12:")
year ,month ,day = raw_data.split("-")
calc_day(year,month,day)
在代码里面我们定义了计算闰年跟平年的函数 isleap(year)它输入年,然后返回闰年是1,平年是0,还定义了一个计算天数的函数calc_day(year,month,day),它接收3个参数,年,月,日,最后面还在if __name__=='__main__':中定义两个数据,用来存放每个月天数的,估计大部分人都是这样的写,但是这样写的话一点都不Python,下面教大家Python的正确写法
完整代码如下
import datetime
raw_data = input("请输入年月日格式如2023-11-12:")
year ,month ,day = raw_data.split("-")
date = datetime.date(int(year), int(month), int(day))
total_day = date.timetuple().tm_yday
print(f"{raw_data}是第{total_day}天")
以上代码使用python 自带的库,datetime.timetuple() 是 Python 中的一个方法,用于将 datetime 对象转换为一个包含年、月、日、时、分、秒的元组。这个方法返回的元组中的元素顺序为:年、月、日、时、分、秒、一周中的第几天(0-6,0 表示星期一)、一年中的第几天(1-366)以及是否为夏令时(-1、0 或 1)。