1. datetime模块
from datetime import datetime, timedelta
# 返回日期、时间、年、月、日、时、分、秒、星期的两种, 以及日期的加减法
v1 = datetime.now().date()
v2 = datetime.now().time()
v3 = datetime.now().year
v4 = datetime.now().month
v5 = datetime.now().day
v6 = datetime.now().hour
v7 = datetime.now().minute
v8 = datetime.now().second
# v9 = (datetime.now() + timedelta(days=-1)).weekday() # int: 0-6 星期几
# v10 = (datetime.now() + timedelta(days=-1)).isoweekday() # int: 1-7 星期几
# 计算两千前的今天,由于今年2021是平年365天,而去年2020年是闰年366天,所以days属性需要减去 365+366
v11 = (datetime.now() + timedelta(days=-(366 + 365))).date()
print(type(v11), v11)
输出:<class 'datetime.date'> 2019-03-03 (当前时间是2021-03-03)
因为timedelta函数里参数只支持按照天、时、分、秒进行累加,而没有按照月份的累加,所以我们就自己定义一个函数来实现
2. 按月份进行累加自己实现方法:
def add_month(d, md):
"""
日期按月份累加
:param d: 日期
:param md: 相加月数
:return: 相加月数之后的日期
"""
month_30 = [2, 4, 6, 9, 11]
yd = md // 12
m = d.month + md % 12
if m != 12:
yd += m // 12
m = m % 12
if d.day == 31 and m in month_30:
return date(d.year + yd, m, 30)
return date(d.year + yd, m, d.day)
参数:d代表传入的日期,参数:md代表传入的要增加的月份
3. 按月份累加第三方库:
pip install python-dateutil
from datetime import datetime, timedelta, date
from dateutil.relativedelta import relativedelta
if __name__ == "__main__":
print(datetime.now() + timedelta(days=1))
# 计算当前日期时间往后推一个月的日期时间
print(datetime.now() + relativedelta(months=1))
# 计算当前日期时间与某个日期时间之间的差
ret = relativedelta(datetime.today(), datetime(2021, 3, 26, 10, 53, 10))
print(ret.years, ret.months, ret.days, ret.hours, ret.minutes, ret.seconds)