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 相关文章推荐
初步讲解Python中的元组概念
May 21 Python
Python减少循环层次和缩进的技巧分析
Mar 15 Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
Python 查看文件的编码格式方法
Dec 21 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
学会Python数据可视化必须尝试这7个库
Jun 16 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
substr()函数中文版
2006/10/09 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
了解一点js的Eval函数
2012/07/26 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
jquery为页面增加快捷键示例
2014/01/31 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
python numpy格式化打印的实例
2018/05/14 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
研究生自我鉴定范文
2013/10/30 职场文书
项目建议书怎么写
2014/05/15 职场文书
服装发布会策划方案
2014/05/22 职场文书
银行柜员与客户起冲突检讨书
2014/09/27 职场文书
二手车交易协议书标准版
2014/11/16 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
对讲机知识
2022/04/07 无线电