好多朋友都遇到过python推算时间的问题,有些把时间转换成整数做推算,这样遇到特殊的时间和日期就会出现错误,在python中时间的推算很简单,主要就是用到datetime.timedelta方法,进行时间的加n减n运算:
>>>import datetime
>>> d1 = datetime.datetime.now()
>>> d1.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 17:11:07'
>>> d2 = d1 + datetime.timedelta(seconds=10)#增加10秒
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 17:11:17'
>>> d2 = d1 + datetime.timedelta(minutes=10)#增加10分钟
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 17:21:07'
>>> d2 = d1 + datetime.timedelta(hours=10)#增加10小时
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-03 03:11:07'
>>> d2 = d1 + datetime.timedelta(days=10)#增加10天
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-12 17:11:07'
>>> d2 = d1 - datetime.timedelta(seconds=10)#减去10秒
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 17:11:57'
>>> d2 = d1 - datetime.timedelta(minutes=10)#增加10分钟
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 17:01:07'
>>> d2 = d1 - datetime.timedelta(hours=10)#减去10小时
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-09-02 07:11:07'
>>> d2 = d1 - datetime.timedelta(days=10)#减去10天
>>> d2.strftime("%Y-%m-%d %H:%M:%S")
'2015-08-23 17:11:07'
实例:
python计算明天的日期:
from datetime import datetime
from datetime import timedelta
now = datetime.now()
aDay = timedelta(days=1)
now = now + aDay
print now.strftime('%Y-%m-%d')
python计算昨天时间:
from datetime import datetime
from datetime import timedelta
now = datetime.now()
aDay = timedelta(days=-1)
now = now + aDay
print now.strftime('%Y-%m-%d')
使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法
计算上个月的月份
import time
last_month = time.localtime()[1]-1 or 12
print last_month
timedelta实现日期相减
from datetime import timedelta
from datetime import datetime
import time
d1 = datetime.now()
time.sleep(10)
eclipseTimes = datetime.now() - d1
print eclipseTimes.total_seconds()
日趋函数的详细了解:
转义符对应意义如下
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%j 年内的一天(001-366)
%m 月份(01-12)
%M 分钟数(00=59)
%p 本地A.M.或P.M.的等价符
%S 秒(00-59)
%f 毫秒(000000-99999)
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%Z 当前时区的名称
%% %号本身
两日期相减
>>>import time
>>>import datetime
>>>d1 = datetime.datetime(2016, 4, 3)
>>>d2 = datetime.datetime(2015, 12, 26)
>>>print (d1 - d2).days
99