Python计算日期和时间差

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值