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中的代码编码格式转换问题
Jun 10 Python
Python正则表达式使用范例分享
Dec 04 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
Python hashlib模块加密过程解析
Nov 05 Python
python 5个顶级异步框架推荐
Sep 09 Python
Python用摘要算法生成token及检验token的示例代码
Dec 01 Python
Python之matplotlib绘制饼图
Apr 13 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
smarty模板引擎之内建函数用法
2015/03/30 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
关于PHP中interface的用处详解
2020/07/26 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
js实现点击生成随机div
2020/01/16 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
从Python的源码来解析Python下的freeblock
2015/05/11 Python
django框架如何集成celery进行开发
2017/05/24 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
Python正则表达式和元字符详解
2018/11/29 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python类型转换的魔术方法详解
2020/12/23 Python
详解Python中的文件操作
2021/01/14 Python
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
门卫岗位职责
2013/11/15 职场文书
庆八一活动方案
2014/01/25 职场文书
水电工岗位职责
2014/02/12 职场文书
入职担保书范文
2014/05/21 职场文书
大学生个人求职信
2014/06/02 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
总经理司机岗位职责
2015/04/10 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2016年员工年度考核评语
2015/12/02 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python