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的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
scrapy爬虫完整实例
Jan 25 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
kafka监控获取指定topic的消息总量示例
Dec 23 Python
Python读取csv文件实例解析
Dec 30 Python
如何使用python实现模拟鼠标点击
Jan 06 Python
解决reload(sys)后print失效的问题
Apr 25 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
python小白切忌乱用表达式
May 29 Python
Python使用tkinter实现小时钟效果
Feb 22 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
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
JavaScript中while循环的基础使用教程
2020/08/11 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
Python实现的简单dns查询功能示例
2017/05/24 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
在django view中给form传入参数的例子
2019/07/19 Python
python实现图像全景拼接
2020/03/27 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
python asyncio 协程库的使用
2021/01/21 Python
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
香港中原电器网上商店:Chung Yuen
2019/06/26 全球购物
工作表扬信的范文
2014/01/10 职场文书
法人代表授权委托书
2014/04/08 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
实习生评语
2014/04/26 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
安全生产月宣传标语
2014/10/06 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
Python进程池与进程锁之语法学习
2022/04/11 Python
Windows7下FTP搭建图文教程
2022/08/05 Servers