Python 日期与时间转换的方法


Posted in Python onAugust 01, 2020

问题

你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换。

解决方案

为了执行不同时间单位的转换和计算,请使用 datetime 模块。 比如,为了表示一个时间段,可以创建一个 timedelta 实例,就像下面这样:

>>> from datetime import timedelta
>>> a = timedelta(days=2, hours=6)
>>> b = timedelta(hours=4.5)
>>> c = a + b
>>> c.days
2
>>> c.seconds
37800
>>> c.seconds / 3600
10.5
>>> c.total_seconds() / 3600
58.5
>>>

如果你想表示指定的日期和时间,先创建一个 datetime 实例然后使用标准的数学运算来操作它们。比如:

>>> from datetime import datetime
>>> a = datetime(2012, 9, 23)
>>> print(a + timedelta(days=10))
2012-10-03 00:00:00
>>>
>>> b = datetime(2012, 12, 21)
>>> d = b - a
>>> d.days
89
>>> now = datetime.today()
>>> print(now)
2012-12-21 14:54:43.094063
>>> print(now + timedelta(minutes=10))
2012-12-21 15:04:43.094063
>>>

在计算的时候,需要注意的是 datetime 会自动处理闰年。比如:

>>> a = datetime(2012, 3, 1)
>>> b = datetime(2012, 2, 28)
>>> a - b
datetime.timedelta(2)
>>> (a - b).days
2
>>> c = datetime(2013, 3, 1)
>>> d = datetime(2013, 2, 28)
>>> (c - d).days
1
>>>

讨论

对大多数基本的日期和时间处理问题, datetime 模块已经足够了。 如果你需要执行更加复杂的日期操作,比如处理时区,模糊时间范围,节假日计算等等, 可以考虑使用 dateutil模块

许多类似的时间计算可以使用 dateutil.relativedelta() 函数代替。 但是,有一点需要注意的就是,它会在处理月份(还有它们的天数差距)的时候填充间隙。看例子最清楚:

>>> a = datetime(2012, 9, 23)
>>> a + timedelta(months=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'months' is an invalid keyword argument for this function
>>>
>>> from dateutil.relativedelta import relativedelta
>>> a + relativedelta(months=+1)
datetime.datetime(2012, 10, 23, 0, 0)
>>> a + relativedelta(months=+4)
datetime.datetime(2013, 1, 23, 0, 0)
>>>
>>> # Time between two dates
>>> b = datetime(2012, 12, 21)
>>> d = b - a
>>> d
datetime.timedelta(89)
>>> d = relativedelta(b, a)
>>> d
relativedelta(months=+2, days=+28)
>>> d.months
2
>>> d.days
28
>>>

以上就是Python 日期与时间转换的方法的详细内容,更多关于Python 日期与时间转换的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
python实现ping的方法
Jul 06 Python
python决策树之C4.5算法详解
Dec 20 Python
PHP实现发送和接收JSON请求
Jun 07 Python
Python最小二乘法矩阵
Jan 02 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
Python面向对象进阶学习
May 21 Python
python实现五子棋人机对战游戏
Mar 25 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 Python
Python 执行矩阵与线性代数运算
Aug 01 #Python
Python实现数字的格式化输出
Aug 01 #Python
Python实现一个简单的递归下降分析器
Aug 01 #Python
Python 如何在字符串中插入变量
Aug 01 #Python
Python打印不合法的文件名
Jul 31 #Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 #Python
Python 如何测试文件是否存在
Jul 31 #Python
You might like
php echo 输出字符串函数详解
2010/05/13 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP函数超时处理方法
2016/02/14 PHP
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
jstree的简单实例
2016/12/01 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
python实现从web抓取文档的方法
2014/09/26 Python
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
网络工程师自荐书范文
2014/04/01 职场文书
五好关工委申报材料
2014/05/31 职场文书
承诺书范文
2014/06/03 职场文书
表扬稿范文
2015/01/17 职场文书
工程技术员岗位职责
2015/04/11 职场文书
交通处罚决定书
2015/06/24 职场文书
小学教师教育随笔
2015/08/14 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python