Python 时间运算函数timedelta与relativedelta
一、relativedelta()
relativedelta()函数可以支持年 、月、日、周、时、分、秒的参数
import datetime
from dateutil.relativedelta import relativedelta
one_month_ago = (datetime.datetime.now() - relativedelta(months=1)).strftime('%Y%m')
二、timedelta()
timedelta() 表示两个 date 对象或者 time 对象,或者 datetime 对象之间的时间间隔,精确到微秒。
最大为周。
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
示例代码:
# -*- coding:utf-8 -*-
import time
from datetime import date,datetime,timedelta
yesterday = (date.today() + timedelta(days = -1)).strftime("%Y-%m-%d")
day_last = datetime.strptime(yesterday, '%Y-%m-%d')
from dateutil.relativedelta import relativedelta
# relativedelta()支持年月日周时分秒的参数,timedelta()仅支持weeks\days\hours\minutes\seconds
yesterday_last_year = (day_last - relativedelta(years=1)).strftime('%Y-%m-%d') # 去年昨日
print("line146 yesterday_last_year", yesterday_last_year)
test_day = (day_last - relativedelta(years=1) - relativedelta(days=18)).strftime('%Y-%m-%d')
print("test_day =", test_day)
last_day_of_last_month = date.today()- relativedelta(years=1) - relativedelta(days=19)
print("last_day_of_last_month =", last_day_of_last_month)
print(date.today())
print(type(date.today()))
print(date.today().strftime('%Y-%m-%d'))
print(type(date.today().strftime('%Y-%m-%d')))
date1 = time.localtime()
print(date1)
print(date1.tm_mday)
year,month,day = date1[:3]
# last_day_of_last_month last_year
last_day_of_last_month = date.today()- relativedelta(years=1) - relativedelta(days=time.localtime().tm_mday)
print("last_day_of_last_month =", last_day_of_last_month)
结果:
line146 yesterday_last_year 2023-03-18
test_day = 2023-02-28
last_day_of_last_month = 2023-02-28
2024-03-19
<class 'datetime.date'>
2024-03-19
<class 'str'>
time.struct_time(tm_year=2024, tm_mon=3, tm_mday=19, tm_hour=17, tm_min=29, tm_sec=34, tm_wday=1, tm_yday=79, tm_isdst=0)
19
last_day_of_last_month = 2023-02-28