编程序实现:输入任意一个日期的年、月、日的值,求出从公元1年1月1日到该日期前一年的年末总共有多少天,到该日期前一个月的月末总共有多少天,到这一天总共有多少天,并求出这一天是星期几(用英文表示)。 假定从公元第一天开始,就实施格里高利历法,并且公元1年1月1日为星期一。格里高利历法的置闰规则是400年97闰,也可以概括为:四闰百不闰,四百闰。
时间: 2024-02-13 11:05:58 浏览: 152
好的,我可以帮你写一个Python程序来实现这个功能。以下是代码:
```python
# 计算从公元1年1月1日到给定日期前一年的年末总共有多少天
def days_to_last_year_end(year, month, day):
if is_leap_year(year):
days_in_february = 29
else:
days_in_february = 28
days_in_month = [31, days_in_february, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days_to_subtract = day - 1
for i in range(month - 1):
days_to_subtract += days_in_month[i]
return 366 if is_leap_year(year - 1) else 365 - days_to_subtract
# 计算从公元1年1月1日到给定日期前一个月的月末总共有多少天
def days_to_last_month_end(year, month, day):
if month == 1:
return 31
elif month == 2:
if is_leap_year(year):
return 60
else:
return 59
else:
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if is_leap_year(year):
days_in_month[1] = 29
days_to_subtract = day
for i in range(month - 2):
days_to_subtract += days_in_month[i]
return days_in_month[month - 2] - (days_to_subtract % days_in_month[month - 2])
# 判断是否为闰年
def is_leap_year(year):
if year % 400 == 0:
return True
elif year % 100 == 0:
return False
elif year % 4 == 0:
return True
else:
return False
# 计算给定日期是星期几
def day_of_week(year, month, day):
days_from_1_1_1 = 0
for y in range(1, year):
days_from_1_1_1 += 366 if is_leap_year(y) else 365
days_from_1_1_1 += sum([days_to_last_month_end(year, m, 1) for m in range(1, month)])
days_from_1_1_1 += day - 1
day_of_week_num = (days_from_1_1_1 + 1) % 7
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
return days_of_week[day_of_week_num]
# 主程序
if __name__ == '__main__':
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
days_to_last_year_end = days_to_last_year_end(year, month, day)
days_to_last_month_end = days_to_last_month_end(year, month, day)
days_to_this_day = 365 if is_leap_year(year) else 364
days_to_this_day -= days_to_last_year_end
days_to_this_day -= days_to_last_month_end
days_to_this_day += day
day_of_week = day_of_week(year, month, day)
print("从公元1年1月1日到该日期前一年的年末总共有{}天".format(days_to_last_year_end))
print("从公元1年1月1日到该日期前一个月的月末总共有{}天".format(days_to_last_month_end))
print("从公元1年1月1日到该日期一共有{}天".format(days_to_this_day))
print("该日期是{}".format(day_of_week))
```
你可以将这段代码保存为一个Python文件并运行。程序会要求你输入要查询的日期的年、月、日,然后输出从公元1年1月1日到该日期前一年的年末总共有多少天,到该日期前一个月的月末总共有多少天,到这一天总共有多少天,并求出这一天是星期几(用英文表示)。
阅读全文