python中关于日期、时间相关函数整理

最近有个需求是要统计各个时间段的累计数值、时间段内的统计数值,涉及到日期、时间函数的处理较多,故趁今日整理一番

1.日期函数:relativedelta
relativedelta函数是dateutil库的一个类,可以用于日期之间的计算,精度可以到年、月、日、时、分、秒;
参数解释:day/month/year设置天日期/月份/年,days/months/years设置日期差异的天数/月差数/年数量

#导入relativedelta包用来计算月份差
from dateutil.relativedelta import relativedelta
#获取当前时间12个月之前的日期时间
start = datetime.now() - relativedelta(months = 12) 
start

运行结果如下
在这里插入图片描述

#计算范围为datetime库的timedelta计算范围大一些,timedelta只满足日期之间的日、时、分、秒的计算,无法计算年、月
from datetime import datetime
from dateutil.relativedelta import relativedelta
print(datetime.now() + relativedelta(day = 1,month = 1,year = 2001)) #获取2001年1月1号的同样时刻,year、month、day为指定年份值、月份值、日期值
print(datetime.now() + relativedelta(days = 1,months = 1,years = 1))  #获取相隔1年+1月+1天后的日期及时间,years、months、days为指定年份差、月份差、天数差

运行结果
在这里插入图片描述
2.日期函数:timedelta函数
两个日期直接相减

from datetime import datetime,timedelta
def dayofyear(date):
    try: 
        date_y = datetime.strptime(date,'%Y-%m-%d')
        date_start = datetime.strptime(str(date_y.year)+'-01'+'-01',"%Y-%m-%d")
        doy = (date_y - date_start).days + 1   #两个datetime日期变量相减结果是datetime.timedelta结果,需要借助.days方法输出天数数字
        #datetime.timedelta,可用于时间的加减,参数为:weeks,days ,hours ,minutes,seconds
        print(date,"是当年第",doy,"天,第二天日期是",(date_y + timedelta(days = 1)).strftime("%Y-%m-%d") )
    except ValueError:
        print("请输入合格的日期内容")

dayofyear('2024-09-01')

运行结果
运行结果

  1. 日期函数:生成一个时间序列,可以使用pd.date_range函数实现,调用格式为:pd.data_range(开始日期,序列数量,日期频率)
months = pd.Series(pd.date_range(start, periods=12, freq='MS'))  
#MS为每个月的月初第一天
#freq参数值有很多,如:Q-DEC为每个季度的最后一天;2Q-DEC为每个半年的第一天
months

运行结果
在这里插入图片描述
季度:每个季度的最后一天
在这里插入图片描述年度:AS为每年的1月1日
在这里插入图片描述
4. 日期函数:日期类型转换
时间字符串转换为日期类型 — datetime.strptime(日期字符串,日期格式)

test = datetime.strptime('2024-11-01','%Y-%m-%d')
a = type(test)
print(test,'类型为',a)

运行结果
在这里插入图片描述
日期型转换为字符串 ---- datetime.strftime(日期格式内容,日期字符串格式)

test = datetime.strptime('2024-11-01','%Y-%m-%d')
test = test.strftime("%Y-%m-%d")
a = type(test)
print(test,'类型为',a)

运行结果在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值