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开发常用的一些开源Package分享
Feb 14 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
python中类的属性和方法介绍
Nov 27 Python
详解python之heapq模块及排序操作
Apr 04 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
pytorch 模型的train模式与eval模式实例
Feb 20 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
如何理解python中数字列表
May 29 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
python实现图片九宫格分割的示例
Apr 25 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
pytorch fine-tune 预训练的模型操作
Jun 03 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个人网站架设连环讲(三)
2006/10/09 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
jQuery中:checked选择器用法实例
2015/01/04 Javascript
javascript去掉代码里面的注释
2015/07/24 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
黑科技 Python脚本帮你找出微信上删除你好友的人
2016/01/07 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
Django自定义用户认证示例详解
2018/03/14 Python
Linux下python制作名片示例
2018/07/20 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
把富文本的回车转为br标签
2019/08/09 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
财务会计应届生求职信
2013/11/24 职场文书
公司中秋节活动方案
2014/02/12 职场文书
连锁超市项目计划书
2014/09/15 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
Redis批量生成数据的实现
2022/06/05 Redis
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android