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 相关文章推荐
在Django框架中编写Contact表单的教程
Jul 17 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Python3实现从排序数组中删除重复项算法分析
Apr 03 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
python银行系统实现源码
Oct 25 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
python opencv实现信用卡的数字识别
Jan 12 Python
python简单验证码识别的实现过程
Jun 20 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 日期时间处理函数小结
2009/12/18 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
javascript 控制弹出窗口
2007/04/10 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
2010/06/07 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
原生JS实现烟花效果
2020/03/10 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
Python中Class类用法实例分析
2015/11/12 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
Python用字典构建多级菜单功能
2019/07/11 Python
Django  ORM 练习题及答案
2019/07/19 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
大一自我鉴定范文
2013/10/04 职场文书
关于赌博的检讨书
2014/01/08 职场文书
团日活动总结
2014/04/28 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
师德培训心得体会2016
2016/01/09 职场文书
js实现自动锁屏功能
2021/06/02 Javascript
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers