今天,明天
问题:输入今天的日期,输出明天的日期。
提示:每年的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] 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}")
|