今天,明天

今天,明天

问题:输入今天的日期,输出明天的日期。

提示:每年的1月、3月、5月、7月、8月、10月、12月有31天,4月、6月、9月、11月有30天,闰年的2月有29天,非闰年的2月是28天。闰年的年号:能被4整除但不能被100整除,或者能被400整除。

方法一:手动计算

def is_leap_year(year):
"""判断是否是闰年"""
return year % 400 == 0 or (year % 100 != 0 and year % 4 == 0)

def get_next_day(year, month, day):
"""计算下一天的日期"""
# 月份对应的天数
month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 如果是闰年,二月份天数改为29
if is_leap_year(year):
month_days[1] = 29

# 计算下一天的日期
day += 1
if day > month_days[month-1]:
day = 1
month += 1
if month > 12:
month = 1
year += 1

return year, month, day

# 示例使用
year, month, day = 2023, 12, 31
next_year, next_month, next_day = get_next_day(year, month, day)
print(f"{year}-{month}-{day} 的下一天是 {next_year}-{next_month}-{next_day}")

方法二:使用datetime模块

from datetime import datetime, timedelta

def get_next_day_v2(year, month, day):
"""使用datetime模块计算下一天的日期"""
current_date = datetime(year, month, day)
next_date = current_date + timedelta(days=1)
return next_date.year, next_date.month, next_date.day

# 示例使用
year, month, day = 2023, 12, 31
next_year, next_month, next_day = get_next_day_v2(year, month, day)
print(f"{year}-{month}-{day} 的下一天是 {next_year}-{next_month}-{next_day}")

方法三:使用dateutil库

第三种方法涉及到使用dateutil库,这个库提供了很多关于日期时间操作的有用扩展。安装方法为:pip install python-dateutil

from datetime import datetime
from dateutil.relativedelta import relativedelta

def get_next_day_v3(year, month, day):
"""使用dateutil库计算下一天的日期"""
current_date = datetime(year, month, day)
next_date = current_date + relativedelta(days=1)
return next_date.year, next_date.month, next_date.day

# 示例使用
year, month, day = 2023, 12, 31
next_year, next_month, next_day = get_next_day_v3(year, month, day)
print(f"{year}-{month}-{day} 的下一天是 {next_year}-{next_month}-{next_day}")