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输出9*9乘法表的方法
May 25 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
详解Python sys.argv使用方法
May 10 Python
Pandas聚合运算和分组运算的实现示例
Oct 17 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
如何在Python 游戏中模拟引力
Mar 27 Python
DRF框架API版本管理实现方法解析
Aug 21 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
python装饰器代码深入讲解
Mar 01 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调用三种数据库的方法(1)
2006/10/09 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
vue2滚动条加载更多数据实现代码
2017/01/10 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
Vue2路由动画效果的实现代码
2017/07/10 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
python字典的值可以修改吗
2020/06/29 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
学生自我鉴定范文
2013/10/04 职场文书
大学军训感言1500字
2014/03/09 职场文书
vue的项目如何打包上线
2022/04/13 Vue.js