返回
每日一题:计算指定日期在一年中的第几天(简单)
后端
2023-11-02 21:00:08
引言
在我们的日常生活中,经常需要对日期进行处理,例如计算两个日期之间的天数、判断某个日期是星期几、计算指定日期在一年中的第几天等等。本文将以Python语言为例,向大家展示如何计算指定日期在一年中的第几天。
算法步骤
- 首先,我们需要从字符串中提取出年、月、日三个字段。我们可以使用split()方法来实现。split()方法可以将一个字符串按照指定的分隔符进行分割,并返回一个列表。例如,下面的代码将字符串"2023-02-15"按照"-"分隔,并返回一个列表["2023", "02", "15"]。
date_str = "2023-02-15"
year, month, day = date_str.split("-")
- 接下来的步骤是计算指定日期是当年的第几天。闰年有366天,平年有365天。闰年的判断规则是:如果年份是4的倍数,并且不是100的倍数,或者年份是400的倍数,那么该年份就是闰年。我们可以使用下面的代码来判断年份是否为闰年:
def is_leap_year(year):
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return True
else:
return False
- 如果指定日期是闰年,那么计算方法如下:
days_in_year = 366
- 如果指定日期是平年,那么计算方法如下:
days_in_year = 365
- 最后,我们需要计算指定日期是当年的第几天。我们可以使用下面的代码来实现:
day_of_year = 0
for i in range(1, int(month)):
if i in [1, 3, 5, 7, 8, 10, 12]:
day_of_year += 31
elif i in [4, 6, 9, 11]:
day_of_year += 30
else:
if is_leap_year(int(year)):
day_of_year += 29
else:
day_of_year += 28
day_of_year += int(day)
- 最后,我们将打印出计算结果:
print(f"指定日期在一年中的第{day_of_year}天")
完整代码
def calculate_day_of_year(date_str):
year, month, day = date_str.split("-")
def is_leap_year(year):
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
return True
else:
return False
if is_leap_year(int(year)):
days_in_year = 366
else:
days_in_year = 365
day_of_year = 0
for i in range(1, int(month)):
if i in [1, 3, 5, 7, 8, 10, 12]:
day_of_year += 31
elif i in [4, 6, 9, 11]:
day_of_year += 30
else:
if is_leap_year(int(year)):
day_of_year += 29
else:
day_of_year += 28
day_of_year += int(day)
return day_of_year
date_str = input("请输入日期(格式:YYYY-MM-DD):")
day_of_year = calculate_day_of_year(date_str)
print(f"指定日期在一年中的第{day_of_year}天")
运行结果
请输入日期(格式:YYYY-MM-DD):2023-02-15
指定日期在一年中的第46天