在 Python 中,日期加减可以通过多种不同的方法实现。
from datetime import datetime, timedelta
# 当前日期
current_date = datetime.now()
print("当前日期:", current_date)
# 加一天
next_day = current_date + timedelta(days=1)
print("加一天:", next_day)
# 减一天
previous_day = current_date - timedelta(days=1)
print("减一天:", previous_day)
# 加一周
next_week = current_date + timedelta(weeks=1)
print("加一周:", next_week)
# 减一周
previous_week = current_date - timedelta(weeks=1)
print("减一周:", previous_week)
# 加一个月
next_month = current_date + timedelta(days=30)
print("加一个月:", next_month)
# 减一个月
previous_month = current_date - timedelta(days=30)
print("减一个月:", previous_month)
# 加一年
next_year = current_date + timedelta(days=365)
print("加一年:", next_year)
# 减一年
previous_year = current_date - timedelta(days=365)
print("减一年:", previous_year)
from datetime import datetime
from dateutil.relativedelta import relativedelta
# 当前日期
current_date = datetime.now()
print("当前日期:", current_date)
# 加一天
next_day = current_date + relativedelta(days=1)
print("加一天:", next_day)
# 减一天
previous_day = current_date - relativedelta(days=1)
print("减一天:", previous_day)
# 加一周
next_week = current_date + relativedelta(weeks=1)
print("加一周:", next_week)
# 减一周
previous_week = current_date - relativedelta(weeks=1)
print("减一周:", previous_week)
# 加一个月
next_month = current_date + relativedelta(months=1)
print("加一个月:", next_month)
# 减一个月
previous_month = current_date - relativedelta(months=1)
print("减一个月:", previous_month)
# 加一年
next_year = current_date + relativedelta(years=1)
print("加一年:", next_year)
# 减一年
previous_year = current_date - relativedelta(years=1)
print("减一年:", previous_year)
import calendar
# 当前日期
current_year = 2023
current_month = 7
current_day = 7
print("当前日期:", current_year, current_month, current_day)
# 加一天
_, next_day = calendar.monthrange(current_year, current_month)
next_day = min(next_day, current_day + 1)
print("加一天:", current_year, current_month, next_day)
# 减一天
_, previous_month_last_day = calendar.monthrange(current_year, current_month - 1)
previous_day = max(previous_month_last_day, current_day - 1)
print("减一天:", current_year, current_month, previous_day)
# 加一周
_, last_day = calendar.monthrange(current_year, current_month)
next_week = min(last_day, current_day + 7)
print("加一周:", current_year, current_month, next_week)
# 减一周
previous_week = max(1, current_day - 7)
print("减一周:", current_year, current_month, previous_week)
# 加一个月
next_month = current_month + 1 if current_month != 12 else 1
next_year = current_year + 1 if current_month == 12 else current_year
print("加一个月:", next_year, next_month, current_day)
# 减一个月
previous_month = current_month - 1 if current_month != 1 else 12
previous_year = current_year - 1 if current_month == 1 else current_year
print("减一个月:", previous_year, previous_month, current_day)
# 加一年
next_year = current_year + 1
print("加一年:", next_year, current_month, current_day)
# 减一年
previous_year = current_year - 1
print("减一年:", previous_year, current_month, current_day)
这些方法在实现日期加减时有一些异同:
第一种方法使用了 datetime 模块的 timedelta 类,提供了直观的方式来执行日期加减操作。它可以精确到微秒级别,并且支持加减年、月、日、小时、分钟、秒等时间单位。这是 Python 内置的标准库,无需额外导入。
第二种方法使用了 dateutil 库的 relativedelta 类,它提供了更加灵活和人性化的日期计算方式。与 timedelta 相比,relativedelta 支持更多的日期偏移选项,例如加减月份、年份等。需要安装 dateutil 库,可以使用 pip install python-dateutil
进行安装。
第三种方法使用了 calendar 库来进行日期加减。它提供了一些与日历相关的功能,包括获取每月的天数等。这种方法更适合进行简单的日期加减,但不支持以小时、分钟和秒为单位的加减操作。无需额外导入,是 Python 的标准库之一。
根据实际需求和代码的复杂度,选择适合的方法来进行日期加减操作。datetime 模块是最常用的方法之一,而 dateutil 库提供了更多的灵活性。calendar 库适合简单的日期加减场景。