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 24 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
python实现俄罗斯方块
Jun 26 Python
一看就懂得Python的math模块
Oct 21 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
python使用配置文件过程详解
Dec 28 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
如何在python中执行另一个py文件
Apr 30 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python 中数组和数字相乘时的注意事项说明
May 10 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中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
js电话号码验证方法
2015/09/28 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
React优化子组件render的使用
2019/05/12 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
python在文本开头插入一行的实例
2018/05/02 Python
Python中偏函数用法示例
2018/06/07 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
python3 mmh3安装及使用方法
2019/10/09 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
个人简历自我评价
2014/02/02 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
Python语言中的数据类型-序列
2022/02/24 Python