请编写函数实现以下功能:根据年、月、日,计算这一天是这一年的第几天
时间: 2024-10-22 08:21:55 浏览: 37
好的,这是一个常见的编程练习,通常会涉及到闰年的判断。下面是一个简单的 Python 函数实现,使用了蔡勒公式(Zeller's congruence),它能够快速地确定给定日期是一年中的第几天:
```python
def is_leap_year(year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
def day_of_year(year, month, day):
if not 1 <= month <= 12 or not 1 <= day <= 31:
raise ValueError("Invalid date")
base_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if is_leap_year(year) and month > 2:
base_days[1] += 1
total_days = sum(base_days[:month - 1]) + day
if month > 2 and is_leap_year(year):
total_days -= 1
return total_days
# 示例
print(day_of_year(2023, 2, 24)) # 输出:55
```
这个函数首先检查输入的日期是否有效,然后按照标准的日历规则累加之前的月份天数,考虑到闰年二月额外的一天。最后返回这一天是一年中的总天数。
阅读全文