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中chr、unichr、ord字符函数之间的对比
Jun 16 Python
python实现读取并显示图片的两种方法
Jan 13 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
python re模块的高级用法详解
Jun 06 Python
使用python脚本实现查询火车票工具
Jul 19 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
使用python3构建文件传输的方法
Feb 13 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
opencv+python实现均值滤波
Feb 19 Python
python实现ssh及sftp功能(实例代码)
Mar 16 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
Python中with及contextlib的用法详解
2017/06/08 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
Python基于FTP模块实现ftp文件上传操作示例
2018/04/23 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
英语演讲稿范文
2014/01/03 职场文书
党员目标管理责任书
2014/07/25 职场文书
工作所在部门证明
2014/09/21 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
公务员处分决定书
2015/06/25 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技