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中if语句的嵌套用法
May 14 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
Python三级菜单的实例
Sep 13 Python
python数据结构之列表和元组的详解
Sep 23 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Python补齐字符串长度的实例
Nov 15 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Python decimal模块使用方法详解
Jun 08 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
世界上第一台立体声收音机
2021/03/01 无线电
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php学习笔记之面向对象
2014/11/08 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
python益智游戏计算汉诺塔问题示例
2014/03/05 Python
Mac下Supervisor进程监控管理工具的安装与配置
2014/12/16 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python使用get_text()方法从大段html中提取文本的实例
2019/08/27 Python
Python3监控疫情的完整代码
2020/02/20 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
汉语言文学毕业生求职信
2013/10/01 职场文书
学生处主任岗位职责
2013/12/01 职场文书
女方回门宴答谢词
2014/01/14 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
学习保证书100字
2015/02/26 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书