Python 日期与时间转换的方法
问题
你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换。
解决方案
为了执行不同时间单位的转换和计算,请使用datetime模块。比如,为了表示一个时间段,可以创建一个timedelta实例,就像下面这样:
>>>fromdatetimeimporttimedelta >>>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实例然后使用标准的数学运算来操作它们。比如:
>>>fromdatetimeimportdatetime >>>a=datetime(2012,9,23) >>>print(a+timedelta(days=10)) 2012-10-0300:00:00 >>> >>>b=datetime(2012,12,21) >>>d=b-a >>>d.days 89 >>>now=datetime.today() >>>print(now) 2012-12-2114:54:43.094063 >>>print(now+timedelta(minutes=10)) 2012-12-2115: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(mostrecentcalllast): File"",line1,in TypeError:'months'isaninvalidkeywordargumentforthisfunction >>> >>>fromdateutil.relativedeltaimportrelativedelta >>>a+relativedelta(months=+1) datetime.datetime(2012,10,23,0,0) >>>a+relativedelta(months=+4) datetime.datetime(2013,1,23,0,0) >>> >>>#Timebetweentwodates >>>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日期与时间转换的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。