处理日期--cookbook读书笔记

本文介绍如何使用Python的datetime模块进行日期转换与运算,包括处理时区、计算日期差、将字符串转换为日期等常见需求。此外,还介绍了如何利用dateutil模块解决更复杂的时间问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 日期的转换及运算

datetime模块可以处理基本的日期转换及运算,主要是用到datetime和timedelta两个类;计算的时候datetime会自动处理闰年。

如果要求还要更高,需要处理时区,模糊时间范围,节假日等,就需要用dateutil模块,主要有relativedelta()函数。

>>> from datetime import datetime, timedelta
>>> d = datetime(2017, 10, 1)
>>> delta = timedelta(days=8, hours=10.5)#还可以有参数minutes,seconds
>>> delta.seconds / 3600 #求小时
10.5
>>> delta.total_seconds() / 3600 #全部转换为小时
202.5
>>> a = d+delta
>>> a
datetime.datetime(2017, 10, 9, 10, 30)
>>> a = datetime(2012, 3, 1)
>>> b = datetime(2012, 2, 28)
>>> (a - b).days #自动计算闰年
2
>>> from dateutil.relativedelta import relativedelta #这个模块需要安装:pip install python-dateutil
>>> d + relativedelta(months=+1, days=-10) #参数很多,可根据需要参考说明
datetime.datetime(2017, 10, 22, 0, 0)
>>> a-d
datetime.timedelta(8, 37800)
>>> relativedelta(a, d)
relativedelta(days=+8, hours=+10, minutes=+30)

2. 字符串转日期

使用datetime模块的strptime()方法。

strptime() 的性能要比你想象中的差很多,因为它是使用纯Python 实现,并且必须处理所有的系统本地设置。如果你要在代码中需要解析大量的日期并且已经知道了日期字符串的确切格式,可以自己实现一套解析方案来获取更好的性能:比如用datetime(year, month,day)直接构建日期。

>>> text = '2017-11-10'
>>> d = datetime.strptime(text, '%Y-%m-%d')
>>> n = datetime.today()
>>> n-d
datetime.timedelta(-22, 58358, 967057)

3. 结合时区的日期操作

对几乎所有涉及到时区的问题,你都应该使用pytz 模块。这个包提供了Olson 时区数据库,它是时区信息的事实上的标准,在很多语言和操作系统里面都可以找到。但是pytz需要自己安装哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值