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 strip()函数 介绍
May 24 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
Apr 16 Python
python编程开发之日期操作实例分析
Nov 13 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
TensorFlow实现MLP多层感知机模型
Mar 09 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
python 实现批量替换文本中的某部分内容
Dec 13 Python
jenkins+python自动化测试持续集成教程
May 12 Python
pytest进阶教程之fixture函数详解
Mar 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
优化javascript的执行速度
2010/01/23 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
浅谈js闭包理解
2019/04/01 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
python3.x实现base64加密和解密
2019/03/28 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
wxPython实现分隔窗口
2019/11/19 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
Hibernate持久层技术
2013/12/16 面试题
护理专业自荐书
2014/06/04 职场文书
应届大学生求职信
2014/07/20 职场文书
西安导游词
2015/02/12 职场文书
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python